コード例 #1
0
func testStmtParse(t *testing.T, stmtAsString string, formFixture interfaces.Form) stmt.Form {
	lex := lexer.NewLexer([]byte(stmtAsString))
	parser := parser.NewParser()
	parseResult, err := parser.Parse(lex)

	if err != nil {
		t.Fatalf("Encountered fatal error during parse: %s", err)
	}

	if parsedForn, parseResultIsForm := parseResult.(stmt.Form); parseResultIsForm {
		if firstFormIdentifier, secondFormIdentifier := parsedForn.Identifier(), formFixture.Identifier(); firstFormIdentifier != secondFormIdentifier {
			t.Errorf("Form identifiers not equal: %s and %s", firstFormIdentifier, secondFormIdentifier)
		}

		if !util.AreStmtListsEqual(parsedForn.Content(), formFixture.Content()) {
			t.Errorf("Form content not equal: %v and %v", parsedForn, formFixture)
		}
	} else {
		t.Fatalf("Parse result is not form")
	}

	return parseResult.(stmt.Form)
}