This repository was archived by the owner on Apr 9, 2024. It is now read-only.
forked from sheenobu/go-obj
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathface_test.go
97 lines (80 loc) · 1.9 KB
/
face_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package obj
import (
"bytes"
"fmt"
"testing"
)
var fNullIndex = int64(-1)
var faceReadTests = []struct {
Items stringList
Error string
Face Face
}{
{stringList{"12//1"}, "", Face{fNullIndex, []*Point{&Point{&Vertex{12, 1, 1, 1}, &Normal{1, 1, 2, 3}, nil}}}},
}
func TestReadFace(t *testing.T) {
var dummyObject Object
dummyObject.Vertices = make([]Vertex, 14)
dummyObject.Vertices[11] = Vertex{12, 1, 1, 1}
dummyObject.Normals = make([]Normal, 3)
dummyObject.Normals[0] = Normal{1, 1, 2, 3}
for _, test := range faceReadTests {
name := fmt.Sprintf("parseFace(%s)", test.Items)
t.Run(name, func(t *testing.T) {
f, err := parseFace(test.Items, &dummyObject)
failed := false
failed = failed || !compareErrors(err, test.Error)
failed = failed || len(f.Points) != len(test.Face.Points)
if !failed {
for pidx, p := range f.Points {
failed = failed || !comparePoints(p, test.Face.Points[pidx])
if failed {
break
}
}
}
if failed {
t.Errorf("got %v, '%v', expected %v, '%v'", f, err, test.Face, test.Error)
}
})
}
}
var faceWriteTests = []struct {
Face Face
Output string
Error string
}{
{
Face: Face{fNullIndex,
[]*Point{
&Point{
Vertex: &Vertex{12, 0, 0, 0},
Normal: &Normal{2, 0, 0, 0},
},
&Point{
Vertex: &Vertex{13, 0, 0, 0},
Normal: &Normal{2, 0, 0, 0},
},
},
},
Output: "12//2 13//2",
Error: "",
},
}
func TestWriteFace(t *testing.T) {
for _, test := range faceWriteTests {
name := fmt.Sprintf("writeFace(%v, wr)", test.Face)
t.Run(name, func(t *testing.T) {
var buf bytes.Buffer
err := writeFace(&test.Face, &buf)
body := string(buf.Bytes())
failed := false
failed = failed || !compareErrors(err, test.Error)
failed = failed || test.Output != body
if failed {
t.Errorf("got '%v', '%v', expected '%v', '%v'",
body, err, test.Output, test.Error)
}
})
}
}