package org.softlang.company.tests; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.softlang.company.features.CompanyBuilder; import org.softlang.company.model.Company; import org.softlang.company.model.Department; import org.softlang.company.model.Employee; /** * * @author jan * * cqCompany means Command & Query company * mcCompany means MethodChaining company */ public class CompanyBuilderTest { @Test public void testCompany() { String name = "abc2"; Company cqCompany = new Company(); cqCompany.setName(name); CompanyBuilder builder = new CompanyBuilder(); Company mcCompany = builder .company(name) .endCompany(); assertEquals(cqCompany, mcCompany); } @Test public void testBigExample() { Company mcCompany = createCompanyMethodChaining(); Company cqCompany = createCompanyCommandAndQuery(); assertEquals(cqCompany, mcCompany); } private Company createCompanyCommandAndQuery() { // Create company Company sampleCompany = new Company(); sampleCompany.setName("ACME Corporation"); // Create all employees Employee craig = new Employee(); craig.setName("Craig"); craig.setAddress("Redmond"); craig.setSalary(123456); Employee erik = new Employee(); erik.setName("Erik"); erik.setAddress("Utrecht"); erik.setSalary(12345); Employee ralf = new Employee(); ralf.setName("Ralf"); ralf.setAddress("Koblenz"); ralf.setSalary(1234); Employee ray = new Employee(); ray.setName("Ray"); ray.setAddress("Redmond"); ray.setSalary(234567); Employee klaus = new Employee(); klaus.setName("Klaus"); klaus.setAddress("Boston"); klaus.setSalary(23456); Employee karl = new Employee(); karl.setName("Karl"); karl.setAddress("Riga"); karl.setSalary(2345); Employee joe = new Employee(); joe.setName("Joe"); joe.setAddress("Wifi City"); joe.setSalary(2344); // Create research department Department research = new Department(); research.setManager(craig); research.setName("Research"); research.getEmployees().add(erik); research.getEmployees().add(ralf); sampleCompany.getDepts().add(research); // Create development department Department development = new Department(); development.setManager(ray); development.setName("Development"); sampleCompany.getDepts().add(development); // Create sub-department dev1 Department dev1 = new Department(); dev1.setName("Dev1"); dev1.setManager(klaus); development.getSubdepts().add(dev1); // Create sub-department dev11 Department dev11 = new Department(); dev11.setName("Dev1.1"); dev11.setManager(karl); dev11.getEmployees().add(joe); dev1.getSubdepts().add(dev11); return sampleCompany; } public static Company createCompanyMethodChaining(){ CompanyBuilder builder = new CompanyBuilder(); return builder .company("ACME Corporation") .department("Research") .manager("Craig") .address("Redmond") .salary(123456) .employee("Erik") .address("Utrecht") .salary(12345) .employee("Ralf") .address("Koblenz") .salary(1234) .endDepartment() .department("Development") .manager("Ray") .address("Redmond") .salary(234567) .department("Dev1") .manager("Klaus") .address("Boston") .salary(23456) .department("Dev1.1") .manager("Karl") .address("Riga") .salary(2345) .employee("Joe") .address("Wifi City") .salary(2344) .endDepartment() .endDepartment() .endDepartment() .endCompany(); } }