package files;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static util.ListUtils.list;
import java.nio.file.Paths;
import java.util.List;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.runners.MethodSorters;
@RunWith(JUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class RequireTests
{
@Test public void aa_require()
{
RelativeSourcePath path =
new RelativeSourcePath(Paths.get("a/b/File.java"));
List<String> classes = list("A", "B", "C");
Require regular = new Require(path, classes, null);
Require _macro = new Require(path, null, "macro");
Require _static = new Require(path, classes, "member");
assertEquals(classes, regular.classes());
assertEquals(null, _macro.classes());
assertEquals(classes, _static.classes());
assertEquals(null, regular.member());
assertEquals(null, regular.macro());
assertEquals("macro", _macro.macro());
assertEquals("member", _static.member());
assertEquals(path, regular.relativePath());
assertTrue(regular.isRegular() && !regular.isStatic() && !regular.isMacro());
assertTrue(!_macro.isRegular() && !_macro.isStatic() && _macro.isMacro());
assertTrue(!_static.isRegular() && _static.isStatic() && !_static.isMacro());
assertEquals(regular.classChain(), "A.B.C");
assertEquals(regular.toString(), "a.b.File:A.B.C");
assertEquals(_macro.toString(), "macro a.b.File:macro");
assertEquals(_static.toString(), "static a.b.File:A.B.C.member");
Require allStatic = new Require(path, classes, "*");
Require allMacro = new Require(path, null, "*");
assertTrue(allStatic.requiresAllMembers());
assertTrue(allMacro .requiresAllMembers());
Require regular2 = new Require(path, classes, null);
Require _macro2 = new Require(path, null, "macro");
Require _static2 = new Require(path, classes, "member");
assertEquals(regular, regular2);
assertEquals(_macro, _macro2);
assertEquals(_static, _static2);
assertTrue(regular.hashCode() == regular2.hashCode());
assertTrue(_macro .hashCode() == _macro2 .hashCode());
assertTrue(_static.hashCode() == _static2.hashCode());
assertFalse(regular.equals(_macro));
assertFalse(regular.equals(_static));
assertFalse(regular.hashCode() == _macro.hashCode());
assertFalse(regular.hashCode() == _static.hashCode());
Require allClasses = new Require(path, list("*"), null);
assertTrue(allClasses.requiresAllClasses());
}
}