108 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
package scanner;
 | 
						|
 | 
						|
import static org.junit.Assert.assertEquals;
 | 
						|
import static testutil.TestUtilities.createInputStreamFromString;
 | 
						|
 | 
						|
import java.io.InputStream;
 | 
						|
 | 
						|
import org.junit.Test;
 | 
						|
 | 
						|
public class LispScannerTextTester {
 | 
						|
 | 
						|
    private void assertTokenTextMatches(String input, String[] expectedTextList) {
 | 
						|
        LispScanner lispScanner = createLispScanner(input);
 | 
						|
 | 
						|
        for (String expectedText : expectedTextList)
 | 
						|
            assertEquals(expectedText, lispScanner.getNextToken().getText());
 | 
						|
    }
 | 
						|
 | 
						|
    private void assertTokenTextMatches(String input, String expectedText) {
 | 
						|
        LispScanner lispScanner = createLispScanner(input);
 | 
						|
 | 
						|
        assertEquals(expectedText, lispScanner.getNextToken().getText());
 | 
						|
    }
 | 
						|
 | 
						|
    private LispScanner createLispScanner(String input) {
 | 
						|
        InputStream stringInputStream = createInputStreamFromString(input);
 | 
						|
 | 
						|
        return new LispScanner(stringInputStream, "testFile");
 | 
						|
    }
 | 
						|
 | 
						|
    private void assertInputFileNameMatches(String input, String expectedInputFileName) {
 | 
						|
        InputStream stringInputStream = createInputStreamFromString(input);
 | 
						|
        LispScanner lispScanner = new LispScanner(stringInputStream, expectedInputFileName);
 | 
						|
 | 
						|
        assertEquals(expectedInputFileName, lispScanner.getNextToken().getFileName());
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenEmptyStream_RecordsCorrectFileName() {
 | 
						|
        String input = "";
 | 
						|
        String expectedFileName = "testFileName";
 | 
						|
 | 
						|
        assertInputFileNameMatches(input, expectedFileName);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenParenthesis_RecordsCorrectText() {
 | 
						|
        String input = "()";
 | 
						|
        String[] expected = { "(", ")" };
 | 
						|
 | 
						|
        assertTokenTextMatches(input, expected);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenQuote_RecordsCorrectText() {
 | 
						|
        String input = "'";
 | 
						|
        String expected = "'";
 | 
						|
 | 
						|
        assertTokenTextMatches(input, expected);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenEOF_ReordsCorrectText() {
 | 
						|
        String input = "";
 | 
						|
        String expected = "EOF";
 | 
						|
 | 
						|
        assertTokenTextMatches(input, expected);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenIdentifier_RecordsCorrectText() {
 | 
						|
        String input = "identifier";
 | 
						|
 | 
						|
        assertTokenTextMatches(input, input);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenNumber_RecordsCorrectText() {
 | 
						|
        String input = "192837456";
 | 
						|
 | 
						|
        assertTokenTextMatches(input, input);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenString_RecordsCorrectText() {
 | 
						|
        String input = "\"String!!! \n More... \"";
 | 
						|
 | 
						|
        assertTokenTextMatches(input, input);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenNumberFollowedByComment_RecordsCorrectText() {
 | 
						|
        String input = "192837456;comment";
 | 
						|
        String expected = "192837456";
 | 
						|
 | 
						|
        assertTokenTextMatches(input, expected);
 | 
						|
    }
 | 
						|
 | 
						|
    @Test
 | 
						|
    public void givenIdentifiersWithCommentBetween_RecordsCorrectText() {
 | 
						|
        String input = "abc123;comment\nabc222";
 | 
						|
        String[] expected = { "abc123", "abc222" };
 | 
						|
 | 
						|
        assertTokenTextMatches(input, expected);
 | 
						|
    }
 | 
						|
 | 
						|
}
 |