コード例 #1
0
ファイル: parser_test.go プロジェクト: qingshan/sieve
func TestIfControlCommand(t *testing.T) {
	input := `if header :contains "Subject" ["keyword1", "keyword2"] { discard :under "test"; stop; }`
	p := Parse("TestIfControlCommand", input)
	file := &ast.File{p.name, p.List}
	commandList := []ast.Command{
		&ast.ControlCommand{
			Name: "if",
			Test: &ast.GenericTest{"header",
				[]ast.Argument{
					ast.TagArgument(":contains"),
					ast.StringArgument([]string{"Subject"}),
					ast.StringArgument([]string{"keyword1", "keyword2"}),
				}},
			Block: []ast.Command{
				&ast.GenericCommand{
					"discard",
					[]ast.Argument{
						ast.TagArgument(":under"),
						ast.StringArgument([]string{"test"}),
					}},
				&ast.StopCommand{},
			},
		},
	}
	expected := &ast.File{
		Name: p.name,
		List: commandList,
	}
	if !ast.Equals(file, expected) {
		// t.Errorf("\nExpected:\n%s\n\nGot:\n%s\n", spew.Sdump(expected), spew.Sdump(output))
		t.Errorf("\nExpected:\n%s\n\nGot:\n%s\n", expected.String(), file.String())
	}
}
コード例 #2
0
ファイル: parser_test.go プロジェクト: qingshan/sieve
func TestGenericCommand(t *testing.T) {
	input := `header :contains "Subject" "subject keyword";`
	p := Parse("TestGenericCommand", input)
	file := &ast.File{p.name, p.List}
	commandList := []ast.Command{
		&ast.GenericCommand{"header", []ast.Argument{
			ast.TagArgument(":contains"),
			ast.StringArgument([]string{"Subject"}),
			ast.StringArgument([]string{"subject keyword"}),
		}},
	}
	expected := &ast.File{
		Name: p.name,
		List: commandList,
	}
	if !ast.Equals(file, expected) {
		// t.Errorf("\nExpected:\n%s\n\nGot:\n%s\n", spew.Sdump(expected), spew.Sdump(output))
		t.Errorf("\nExpected:\n%s\n\nGot:\n%s\n", expected.String(), file.String())
	}
}