Created
October 11, 2011 00:09
-
-
Save coderunner/1276930 to your computer and use it in GitHub Desktop.
Revisions
-
coderunner revised this gist
Oct 11, 2011 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -27,7 +27,8 @@ public void setup() requirementsImporter = createStrictMock(RequirementsImporter.class); requirements = createStrictMock(Requirements.class); requirement = createStrictMock(Requirement.class); designDiscussionGenerator = createStrictMock(DesignDiscussionGenerator.class); discussions = createStrictMock(DesignDiscussions.class); discussion = createStrictMock(DesignDiscussion.class); problems = createStrictMock(Problems.class); -
coderunner revised this gist
Oct 11, 2011 . 1 changed file with 13 additions and 7 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -39,20 +39,26 @@ public void setup() designDiscussionGenerator, discussions, discussion, problems, problem, designPatternFactory, designPattern, code}; coder = new ExpertCoder(requirementsImporter, designDiscussionGenerator, designPatternFactory); } @Test public void shouldWriteSimpleCode() { reset(allMocks); expect(requirementsImporter.importRequirements(REQUIREMENTS)) .andReturn(requirements); expect(requirements.getRequirement(0)) .andReturn(requirement); expect(designDiscussionGenerator.discussDesign(requirement)) .andReturn(discussions); expect(discussions.getNextDiscussion()).andReturn(discussion); expect(discussion.discuss()).andReturn(problems); expect(problems.getNextProblem()).andReturn(problem); expect(designPatternFactory.choosePattern(problem)) .andReturn(designPattern); expect(designPattern.apply()).andReturn(code); replay(allMocks); @@ -61,8 +67,8 @@ public void shouldWriteSimpleCode() verify(allMocks); assertEquals(Correctness.MINOR_ISSUES, code.getCorrectness()); //TODO FIX THIS! /*failed-->*/ //assertEquals(Complexity.LOW, code.getComplexity()); /*failed-->*/ //assertEquals(Size.SMALL, code.getCodeSize()); } } -
coderunner revised this gist
Oct 11, 2011 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -43,7 +43,7 @@ public void setup() } @Test public void shouldWriteSimpleCode() { reset(allMocks); expect(requirementsImporter.importRequirements(REQUIREMENTS)).andReturn(requirements); -
coderunner created this gist
Oct 11, 2011 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,104 @@ public interface Coder { public Code writeCodeFor(String[] requirements); } public class TestExpertCoder { private static final String[] REQUIREMENTS = {"simple requirement"}; private ExpertCoder coder; private RequirementsImporter requirementsImporter; private Requirements requirements; private Requirement requirement; private DesignDiscussionGenerator designDiscussionGenerator; private DesignDiscussions discussions; private DesignDiscussion discussion; private Problems problems; private Problem problem; private DesignPatternFactory designPatternFactory; private DesignPattern designPattern; private Code code; private Object[] allMocks; @Before public void setup() { requirementsImporter = createStrictMock(RequirementsImporter.class); requirements = createStrictMock(Requirements.class); requirement = createStrictMock(Requirement.class); designDiscussionGenerator = createStrictMock(DesignDiscussionGenerator.class); discussions = createStrictMock(DesignDiscussions.class); discussion = createStrictMock(DesignDiscussion.class); problems = createStrictMock(Problems.class); problem = createStrictMock(Problem.class); designPatternFactory = createStrictMock(DesignPatternFactory.class); designPattern = createStrictMock(DesignPattern.class); code = createStrictMock(Code.class); allMocks = new Object[]{requirementsImporter, requirements, requirement, designDiscussionGenerator, discussions, discussion, problems, problem, designPatternFactory, designPattern, code}; coder = new ExpertCoder(requirementsImporter, designDiscussionGenerator, designPatternFactory); } @Test public void testCodeWithSimpleRequirements() { reset(allMocks); expect(requirementsImporter.importRequirements(REQUIREMENTS)).andReturn(requirements); expect(requirements.getRequirement(0)).andReturn(requirement); expect(designDiscussionGenerator.discussDesign(requirement)).andReturn(discussions); expect(discussions.getNextDiscussion()).andReturn(discussion); expect(discussion.discuss()).andReturn(problems); expect(problems.getNextProblem()).andReturn(problem); expect(designPatternFactory.choosePattern(problem)).andReturn(designPattern); expect(designPattern.apply()).andReturn(code); replay(allMocks); Code code = coder.writeCodeFor(REQUIREMENTS); verify(allMocks); assertEquals(Correctness.MINOR_ISSUES, code.getCorrectness()); //TODO FIX THIS! /* assertion failed -->*/ //assertEquals(Complexity.LOW, code.getComplexity()); /* assertion failed -->*/ //assertEquals(Size.SMALL, code.getCodeSize()); } } public class TestMasterCoder { private static final String[] REQUIREMENTS = {"simple requirement"}; private MasterCoder coder; private Task task; private Task[] tasks; private Experience experience; private DesignPrinciples principles; private Code code; @Before public void setup() { experience = mock(Experience.class); principles = mock(DesignPrinciples.class); code = mock(Code.class); task = new Task(); tasks = new Task[]{task}; coder = new MasterCoder(principles, experience); } @Test public void shouldWriteSimpleCode() { when(experience.breakIntoTasks(REQUIREMENTS)).thenReturn(tasks); when(principles.apply(task)).thenReturn(code); Code code = coder.writeCodeFor(REQUIREMENTS); assertEquals(Complexity.LOW, code.getComplexity()); assertEquals(Correctness.PERFECT, code.getCorrectness()); assertEquals(Size.SMALL, code.getCodeSize()); } }