mirror of https://github.com/fluffle/goirc
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package client
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLineCopy(t *testing.T) {
|
|
l1 := &Line{
|
|
Nick: "nick",
|
|
Ident: "ident",
|
|
Host: "host",
|
|
Src: "src",
|
|
Cmd: "cmd",
|
|
Raw: "raw",
|
|
Args: []string{"arg", "text"},
|
|
Time: time.Now(),
|
|
}
|
|
|
|
l2 := l1.Copy()
|
|
|
|
// Ugly. Couldn't be bothered to bust out reflect and actually think.
|
|
if l2.Nick != "nick" || l2.Ident != "ident" || l2.Host != "host" ||
|
|
l2.Src != "src" || l2.Cmd != "cmd" || l2.Raw != "raw" ||
|
|
l2.Args[0] != "arg" || l2.Args[1] != "text" || l2.Time != l1.Time {
|
|
t.Errorf("Line not copied correctly")
|
|
t.Errorf("l1: %#v\nl2: %#v", l1, l2)
|
|
}
|
|
|
|
// Now, modify l2 and verify l1 not changed
|
|
l2.Nick = l2.Nick[1:]
|
|
l2.Ident = "foo"
|
|
l2.Host = ""
|
|
l2.Args[0] = l2.Args[0][1:]
|
|
l2.Args[1] = "bar"
|
|
l2.Time = time.Now()
|
|
|
|
if l1.Nick != "nick" || l1.Ident != "ident" || l1.Host != "host" ||
|
|
l1.Src != "src" || l1.Cmd != "cmd" || l1.Raw != "raw" ||
|
|
l1.Args[0] != "arg" || l1.Args[1] != "text" || l1.Time == l2.Time {
|
|
t.Errorf("Original modified when copy changed")
|
|
t.Errorf("l1: %#v\nl2: %#v", l1, l2)
|
|
}
|
|
}
|