@Test public void shouldInitializeContextTemporariesWhenVisitingTemporaries() { Temporaries temporaries = mock(Temporaries.class); when(temporaries.size()).thenReturn(2); analyser.visitBegin(temporaries); verify(writer).invokeContextTemporariesInit(2); }
@Test public void shouldInvokePrimObjectArrayWhenVisitArray() { Array array = mock(Array.class); when(array.size()).thenReturn(2); analyser.visitBegin(array); verify(writer).invokeObjectArray(2); }
@Test public void shouldInitializeTemporaryRegistryWhenVisitingTemporaries() { Temporaries temporaries = mock(Temporaries.class); analyser.visitBegin(temporaries); assertNotNull(analyser.temporariesRegistry()); assertEquals(0, analyser.temporariesRegistry().size()); }
@Test public void shouldInitializeArgumentRegistryWhenVisitingBlockArguments() { BlockArguments blockArguments = mock(BlockArguments.class); analyser.visitBegin(blockArguments, 1); assertNotNull(analyser.argumentsRegistry()); assertEquals(0, analyser.argumentsRegistry().size()); }
@Test public void shouldRegisterArgumentWhenVisitingBlockArgument() { BlockArguments blockArguments = mock(BlockArguments.class); BlockArgument blockArgument = mock(BlockArgument.class); analyser.visitBegin(blockArguments, 1); analyser.visit(blockArgument, "arg", 1); assertNotNull(analyser.argumentsRegistry()); assertEquals(1, analyser.argumentsRegistry().size()); assertEquals(0, (int) analyser.argumentsRegistry().get("arg")); assertEquals(1, analyser.argumentsIndex()); }
@Test public void shouldRegisterTemporaryWhenVisitingTemporary() { Temporaries temporaries = mock(Temporaries.class); Temporary temporary = mock(Temporary.class); analyser.visitBegin(temporaries); analyser.visit(temporary, "temp", 1); assertNotNull(analyser.temporariesRegistry()); assertEquals(1, analyser.temporariesRegistry().size()); assertEquals(0, (int) analyser.temporariesRegistry().get("temp")); assertEquals(1, analyser.temporariesIndex()); }
@Test public void shouldRegisterAndInvokeCompilerOfBlockWhenVisitBeginOfBlock() { Block block = mock(Block.class); when(parent.className()).thenReturn("SomeClass"); when(parent.packageName()).thenReturn("st.redline"); ProgramAnalyser spy = spy(analyser); SmalltalkEnvironment smalltalkEnvironment = mock(SmalltalkEnvironment.class); doReturn(smalltalkEnvironment).when(spy).smalltalkEnvironment(); spy.visitBegin(block, 1); verify(smalltalkEnvironment).registerBlockToBeCompiled(block, "st.redline.SomeClass$M1"); verify(writer).invokeObjectCompileBlock("st.redline.SomeClass$M1", 1); }
@Test public void shouldOpenClassWhenVisitingProgramNodeBegins() { analyser.visitBegin(mock(Program.class)); verify(writer).openClass(); }
@Test public void shouldDuplicateStackWhenCascadeBegins() { analyser.visitBegin(mock(Cascade.class)); verify(writer).pushDuplicate(); }