/**
* Copyright (c) 2009-2011, The HATS Consortium. All rights reserved.
* This file is licensed under the terms of the Modified BSD License.
*/
package org.absmodels.abs.plugin.wizards;
import static org.absmodels.abs.plugin.wizards.WizardUtil.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.absmodels.abs.plugin.builder.AbsNature;
import org.absmodels.abs.plugin.util.InternalASTNode;
import org.eclipse.core.resources.IProject;
import org.junit.Test;
import abs.frontend.ast.ClassDecl;
import abs.frontend.ast.Decl;
import abs.frontend.ast.InterfaceDecl;
import abs.frontend.ast.List;
import abs.frontend.ast.ModuleDecl;
public class WizardUtilsTests {
@Test
public void testValidateModule() {
String valid1 = "A";
String valid2 = "A.B";
String valid3 = "A.b";
String invalid1 = "";
String invalid2 = "a";
String invalid3 = "a.b";
String invalid4 = ";";
String invalid5 = "A.?";
String invalid6 = "A.5";
String invalid7 = "module";
assertTrue(validateModule(valid1).equals(ErrorType.NO_ERROR));
assertTrue(validateModule(valid2).equals(ErrorType.NO_ERROR));
assertTrue(validateModule(valid3).equals(ErrorType.NO_ERROR));
assertTrue(validateModule(invalid1).equals(ErrorType.ERROR_NO_NAME));
assertTrue(validateModule(invalid2).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validateModule(invalid3).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validateModule(invalid4).equals(ErrorType.ERROR_INVALID_NAME));
assertTrue(validateModule(invalid5).equals(ErrorType.ERROR_INVALID_NAME));
assertTrue(validateModule(invalid6).equals(ErrorType.ERROR_INVALID_NAME));
assertTrue(validateModule(invalid7).equals(ErrorType.ERROR_KEYWORD));
}
@Test
public void testValidate() {
String valid1 = "A";
String valid2 = "Abc3";
String valid3 = "ABC3";
String invalid1 = "";
String invalid2 = "a";
String invalid3 = "a.b";
String invalid4 = ";";
String invalid5 = "module";
assertTrue(validate(valid1).equals(ErrorType.NO_ERROR));
assertTrue(validate(valid2).equals(ErrorType.NO_ERROR));
assertTrue(validate(valid3).equals(ErrorType.NO_ERROR));
assertTrue(validate(invalid1).equals(ErrorType.ERROR_NO_NAME));
assertTrue(validate(invalid2).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validate(invalid3).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validate(invalid4).equals(ErrorType.ERROR_INVALID_NAME));
assertTrue(validate(invalid5).equals(ErrorType.ERROR_KEYWORD));
}
@Test
public void testValidateClass() {
ModuleDecl mockDecl = mock(ModuleDecl.class);
List<Decl> list = new List<Decl>();
ClassDecl m1 = mock(ClassDecl.class);
ClassDecl m2 = mock(ClassDecl.class);
when(m1.getName()).thenReturn("Class1");
when(m2.getName()).thenReturn("Class2");
list.add(m1);
list.add(m2);
when(mockDecl.getDecls()).thenReturn(list);
String valid1 = "A";
String valid2 = "Abc3";
String valid3 = "ABC3";
String invalid1 = "";
String invalid2 = "a";
String invalid3 = "a.b";
String invalid4 = ";";
String invalid5 = "module";
String invalid6 = "Class1";
String invalid7 = "Class2";
assertTrue(validateClass(valid1,mockDecl).equals(ErrorType.NO_ERROR));
assertTrue(validateClass(valid2,mockDecl).equals(ErrorType.NO_ERROR));
assertTrue(validateClass(valid3,mockDecl).equals(ErrorType.NO_ERROR));
assertTrue(validateClass(invalid1,mockDecl).equals(ErrorType.ERROR_NO_NAME));
assertTrue(validateClass(invalid2,mockDecl).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validateClass(invalid3,mockDecl).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validateClass(invalid4,mockDecl).equals(ErrorType.ERROR_INVALID_NAME));
assertTrue(validateClass(invalid5,mockDecl).equals(ErrorType.ERROR_KEYWORD));
assertTrue(validateClass(invalid6,mockDecl).equals(ErrorType.ERROR_DUPLICATE_NAME));
assertTrue(validateClass(invalid7,mockDecl).equals(ErrorType.ERROR_DUPLICATE_NAME));
}
@Test
public void testValidateInterface() {
ModuleDecl mockDecl = mock(ModuleDecl.class);
List<Decl> list = new List<Decl>();
InterfaceDecl m1 = mock(InterfaceDecl.class);
InterfaceDecl m2 = mock(InterfaceDecl.class);
when(m1.getName()).thenReturn("Interface1");
when(m2.getName()).thenReturn("Interface2");
list.add(m1);
list.add(m2);
when(mockDecl.getDecls()).thenReturn(list);
String valid1 = "A";
String valid2 = "Abc3";
String valid3 = "ABC3";
String invalid1 = "";
String invalid2 = "a";
String invalid3 = "a.b";
String invalid4 = ";";
String invalid5 = "module";
String invalid6 = "Interface1";
String invalid7 = "Interface2";
assertTrue(validateInterface(valid1,mockDecl).equals(ErrorType.NO_ERROR));
assertTrue(validateInterface(valid2,mockDecl).equals(ErrorType.NO_ERROR));
assertTrue(validateInterface(valid3,mockDecl).equals(ErrorType.NO_ERROR));
assertTrue(validateInterface(invalid1,mockDecl).equals(ErrorType.ERROR_NO_NAME));
assertTrue(validateInterface(invalid2,mockDecl).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validateInterface(invalid3,mockDecl).equals(ErrorType.ERROR_NO_UPPER_CASE));
assertTrue(validateInterface(invalid4,mockDecl).equals(ErrorType.ERROR_INVALID_NAME));
assertTrue(validateInterface(invalid5,mockDecl).equals(ErrorType.ERROR_KEYWORD));
assertTrue(validateInterface(invalid6,mockDecl).equals(ErrorType.ERROR_DUPLICATE_NAME));
assertTrue(validateInterface(invalid7,mockDecl).equals(ErrorType.ERROR_DUPLICATE_NAME));
}
@Test
public void testGetProjectOfModuleDecl() {
AbsNature natureMock = mock(AbsNature.class);
IProject project = mock(IProject.class);
when(project.getName()).thenReturn("");
when(natureMock.getProject()).thenReturn(project);
ModuleDecl moduleMock = mock(ModuleDecl.class);
InternalASTNode<ModuleDecl> node = new InternalASTNode<ModuleDecl>(moduleMock,natureMock);
assertSame(node.getProject(),project);
}
}