package r1459 import ( "testing" ) func TestBaseParse(t *testing.T) { line := "FOO" lineStruct := NewRawLine(line) if lineStruct.Verb != "FOO" { t.Fatalf("Line verb expected to be FOO, it is %s", lineStruct.Verb) } } func TestPRIVMSGParse(t *testing.T) { line := ":Xena!oper@yolo-swag.com PRIVMSG #niichan :Why hello there" lineStruct := NewRawLine(line) if lineStruct.Verb != "PRIVMSG" { t.Fatalf("Line verb expected to be PRIVMSG, it is %s", lineStruct.Verb) } if lineStruct.Source != "Xena!oper@yolo-swag.com" { t.Fatalf("Line source expected to be PRIVMSG, it is %s", lineStruct.Source) } if len(lineStruct.Args) != 2 { t.Fatalf("Line arg count expected to be 2, it is %s", len(lineStruct.Args)) } if lineStruct.Args[0] != "#niichan" { t.Fatalf("Line arg 0 expected to be #niichan, it is %s", lineStruct.Args[0]) } if lineStruct.Args[1] != "Why hello there" { t.Fatalf("Line arg 1 expected to be 'Why hello there', it is %s", lineStruct.Args[1]) } } // This test case has previously been known to crash this library. func TestPreviouslyBreakingLine(t *testing.T) { line := ":649AAAABS AWAY" lineStruct := NewRawLine(line) if lineStruct.Source != "649AAAABS" { t.Fatalf("Line source expected to be 649AAAABS, it is %s", lineStruct.Source) } if lineStruct.Verb != "AWAY" { t.Fatalf("Line verb expected to be AWAY, it is %s", lineStruct.Verb) } } func TestStringWithSource(t *testing.T) { line := &RawLine{ Source: "Foo", Verb: "BAR", Args: []string{"#bar", "fozbroz arg with spaces"}, } if res := line.String(); res != ":Foo BAR #bar :fozbroz arg with spaces" { t.Fatalf("Expected :Foo BAR #bar :fozbroz arg with spaces and got %s", res) } } func TestStringWithoutSource(t *testing.T) { line := &RawLine{ Verb: "BAR", Args: []string{"#bar", "fozbroz arg with spaces"}, } if res := line.String(); res != "BAR #bar :fozbroz arg with spaces" { t.Fatalf("Expected BAR #bar :fozbroz arg with spaces and got %s", res) } }