001package com.ganteater.ae.processor; 002 003import static org.junit.Assert.*; 004 005import java.io.File; 006 007import org.junit.Test; 008 009public class TestIteratorTest { 010 011 private static class StubProcessor extends Processor { 012 private final java.util.Map<String, Object> vars = new java.util.HashMap<String, Object>(); 013 014 @Override 015 public void setVariableValue(String name, Object value) { 016 vars.put(name, value); 017 } 018 019 @Override 020 public Object getVariableValue(String name) { 021 return vars.get(name); 022 } 023 024 @Override 025 public String replaceProperties(String value) { 026 return value; 027 } 028 029 @Override 030 public File getBaseDir() { 031 return new File("."); 032 } 033 } 034 035 @Test 036 public void count_shouldReturnCalculatedIterationCount_forSingleSection() throws Exception { 037 // Arrange 038 String rules = "#\n" + ParameterIterator.SINGLE + "\n" + "a $enum=1;2;3\n"; 039 StubProcessor processor = new StubProcessor(); 040 041 // Act 042 TestIterator iterator = new TestIterator(processor, rules); 043 044 // Assert 045 assertEquals(3, iterator.count()); 046 assertArrayEquals(new String[] { "a" }, iterator.getPropertiesList()); 047 } 048 049 @Test 050 public void nextIteration_shouldApplyValuesAcrossIterations() throws Exception { 051 // Arrange 052 String rules = "#\n" + ParameterIterator.SINGLE + "\n" + "a $enum=1;2\n"; 053 StubProcessor processor = new StubProcessor(); 054 TestIterator iterator = new TestIterator(processor, rules); 055 056 // Act 057 iterator.nextIteration(processor); 058 Object v1 = processor.getVariableValue("a"); 059 iterator.nextIteration(processor); 060 Object v2 = processor.getVariableValue("a"); 061 062 // Assert 063 assertEquals("1", v1); 064 assertEquals("2", v2); 065 } 066 067 @Test(expected = IllegalArgumentException.class) 068 public void constructor_shouldThrowForIncorrectLineWithoutRuleDelimiter() throws Exception { 069 // Arrange 070 String rules = "[single]\nthis line has no delimiter\n"; 071 StubProcessor processor = new StubProcessor(); 072 073 // Act 074 new TestIterator(processor, rules); 075 } 076}