@@ -20,6 +20,7 @@ package ota
20
20
import (
21
21
"bytes"
22
22
"encoding/hex"
23
+ "io/ioutil"
23
24
"log"
24
25
25
26
"fmt"
@@ -38,7 +39,6 @@ func TestComputeCrc32Checksum(t *testing.T) {
38
39
}
39
40
40
41
func TestEncoderWrite (t * testing.T ) {
41
-
42
42
// Setup test data
43
43
data , _ := hex .DecodeString ("DEADBEEF" ) // uncompressed, or 'ef 6b 77 de f0' (compressed w/ LZSS)
44
44
@@ -47,7 +47,7 @@ func TestEncoderWrite(t *testing.T) {
47
47
productID := "8054" // MRK Wifi 1010
48
48
49
49
otaWriter := NewWriter (& w , vendorID , productID )
50
- defer otaWriter .Close ()
50
+ otaWriter .Close ()
51
51
52
52
n , err := otaWriter .Write (data )
53
53
if err != nil {
@@ -72,3 +72,50 @@ func TestEncoderWrite(t *testing.T) {
72
72
73
73
assert .Assert (t , res == 0 ) // 0 means equal
74
74
}
75
+
76
+ func TestEncoderWriteFiles (t * testing.T ) {
77
+ tests := []struct {
78
+ name string
79
+ infile string
80
+ outfile string
81
+ }{
82
+ {
83
+ name : "blink" ,
84
+ infile : "testdata/blink.bin" ,
85
+ outfile : "testdata/blink.ota" ,
86
+ },
87
+ {
88
+ name : "cloud sketch" ,
89
+ infile : "testdata/cloud.bin" ,
90
+ outfile : "testdata/cloud.ota" ,
91
+ },
92
+ }
93
+
94
+ for _ , tt := range tests {
95
+ t .Run (tt .name , func (t * testing.T ) {
96
+ input , err := ioutil .ReadFile (tt .infile )
97
+ if err != nil {
98
+ t .Fatal ("couldn't open test file" )
99
+ }
100
+
101
+ want , err := ioutil .ReadFile (tt .outfile )
102
+ if err != nil {
103
+ t .Fatal ("couldn't open test file" )
104
+ }
105
+
106
+ var got bytes.Buffer
107
+ vendorID := "2341" // Arduino
108
+ productID := "8057" // Nano 33 IoT
109
+ otaWriter := NewWriter (& got , vendorID , productID )
110
+ _ , err = otaWriter .Write (input )
111
+ if err != nil {
112
+ t .Error (err )
113
+ }
114
+ otaWriter .Close ()
115
+
116
+ if ! bytes .Equal (want , got .Bytes ()) {
117
+ t .Error ("encoding failed" )
118
+ }
119
+ })
120
+ }
121
+ }
0 commit comments