-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnode_test.go
119 lines (105 loc) · 3.3 KB
/
node_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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package main
import (
"bytes"
"testing"
"github.com/stretchr/testify/assert"
)
func TestSaveAndLoadNodeWithSliceProperty(t *testing.T) {
// ****************************** ARRANGE *********************************
data := []float64{
666,
420,
69,
2020,
}
reader := NewReader()
reader.nodeHeader = make([]byte, 25)
reader.FBX.Header = &Header{
data: nil,
version: 7500,
}
buffer := new(bytes.Buffer)
node := NewNodeFloat64Slice("Float64 Test", data)
// ******************************** ACT ***********************************
_, writeErr := node.Write(buffer, 0, false)
nodeFromBuffer, _ := reader.ReadNodeFrom(bytes.NewReader(buffer.Bytes()))
// ******************************* ASSERT *********************************
assert.NoError(t, writeErr)
assert.NoError(t, reader.Error)
if assert.NotNil(t, nodeFromBuffer) {
dataBack, _ := nodeFromBuffer.Float64Slice()
if assert.Len(t, dataBack, len(data)) {
assert.Equal(t, data[0], dataBack[0])
assert.Equal(t, data[1], dataBack[1])
assert.Equal(t, data[2], dataBack[2])
assert.Equal(t, data[3], dataBack[3])
}
}
}
func TestSaveAndLoadNestedNodeStructuresWithSliceProperty(t *testing.T) {
// ****************************** ARRANGE *********************************
data := []float64{
6.66,
42.0,
6.9,
20.20,
}
data32 := []int32{
666,
420,
69,
2020,
}
reader := NewReader()
buffer := new(bytes.Buffer)
writer, err := NewWriter(buffer)
if assert.NoError(t, err) == false {
return
}
node := NewNodeParent(
"Geometry",
NewNodeParent(
"The Parent Node",
NewNodeString("cock and", "ball torture"),
NewNodeFloat64Slice("Float64 Test", data),
NewNodeInt32Slice("Int32 Test", data32),
),
)
// ******************************** ACT ***********************************
writeSuccesful := writer.WriteNode(node)
completeSuccesful := writer.Complete()
_, readErr := reader.ReadFrom(bytes.NewReader(buffer.Bytes()))
nodeFromBuffer := reader.FBX.Nodes[2]
// ******************************* ASSERT *********************************
assert.True(t, writeSuccesful)
assert.NoError(t, completeSuccesful)
assert.NoError(t, readErr)
assert.NoError(t, reader.Error)
if assert.NotNil(t, nodeFromBuffer) == false {
return
}
if assert.Len(t, nodeFromBuffer.NestedNodes, 1) == false {
return
}
if assert.Len(t, nodeFromBuffer.NestedNodes[0].NestedNodes, 3) {
assert.Equal(t, "cock and", nodeFromBuffer.NestedNodes[0].NestedNodes[0].Name)
sData, _ := nodeFromBuffer.NestedNodes[0].NestedNodes[0].StringProperty()
assert.Equal(t, "ball torture", sData)
data64Back, _ := nodeFromBuffer.NestedNodes[0].NestedNodes[1].Float64Slice()
assert.Equal(t, "Float64 Test", nodeFromBuffer.NestedNodes[0].NestedNodes[1].Name)
if assert.Len(t, data64Back, len(data)) {
assert.Equal(t, data[0], data64Back[0])
assert.Equal(t, data[1], data64Back[1])
assert.Equal(t, data[2], data64Back[2])
assert.Equal(t, data[3], data64Back[3])
}
data32Back, _ := nodeFromBuffer.NestedNodes[0].NestedNodes[2].Int32Slice()
assert.Equal(t, "Int32 Test", nodeFromBuffer.NestedNodes[0].NestedNodes[2].Name)
if assert.Len(t, data32Back, len(data)) {
assert.Equal(t, data32[0], data32Back[0])
assert.Equal(t, data32[1], data32Back[1])
assert.Equal(t, data32[2], data32Back[2])
assert.Equal(t, data32[3], data32Back[3])
}
}
}