robocar-tools/dkimpt/import_test.go

88 lines
2.2 KiB
Go

package dkimpt
import (
"encoding/json"
record2 "github.com/cyrilix/robocar-tools/record"
"go.uber.org/zap"
"io/ioutil"
"os"
"path"
"testing"
)
func TestImportDonkeyRecords(t *testing.T) {
destDir, err := ioutil.TempDir("", "test-import")
if err != nil {
t.Errorf("unable to generate destdir for test")
}
defer func() {
err := os.RemoveAll(destDir)
zap.S().Errorf("unable to delete tmpdir %v: %v", destDir, err)
}()
err = ImportDonkeyRecords("testdata", destDir)
if err != nil {
t.Errorf("unable to import files: %v", err)
}
cases := []struct {
setDir string
expectedDir int
expectedRecords int
}{
{"20191012_111416", 1, 7},
{"20191012_122633", 1, 8},
}
for _, c := range cases {
files, err := ioutil.ReadDir(path.Join(destDir, c.setDir))
if err != nil {
t.Errorf("[%v] unable to list %v content: %v", c.setDir, destDir, err)
}
dirNames := make([]string, 0)
fileNames := make([]string, 0)
for _, f := range files {
if f.IsDir() {
dirNames = append(dirNames, f.Name())
} else {
fileNames = append(fileNames, f.Name())
}
}
if len(dirNames) != c.expectedDir {
t.Errorf("[%v] %v dirs found, wants %v", c.setDir, len(dirNames), 1)
}
if len(fileNames) != c.expectedRecords {
t.Errorf("[%v] %v files found, wants %v", c.setDir, len(fileNames), 15)
}
for _, jsonFile := range fileNames {
content, err := ioutil.ReadFile(path.Join(destDir, c.setDir, jsonFile))
if err != nil {
t.Errorf("[%v] unable to read file content of %v: %v", c.setDir, jsonFile, err)
continue
}
var record record2.Record
err = json.Unmarshal(content, &record)
if err != nil {
t.Errorf("[%v] unable to unmarshal file %v with content %v: %v", c.setDir, jsonFile, content, err)
continue
}
if record.UserAngle == 0. {
t.Errorf("[%v] user_angle field not initialized for %v file: %v", c.setDir, jsonFile, content)
}
camPath := path.Join(destDir, c.setDir, record.CamImageArray)
camFile, err := os.Stat(camPath)
if os.IsNotExist(err) {
t.Errorf("[%v] cam image %v doesn't exist for record %v: %v", c.setDir, camPath, jsonFile, err)
continue
}
if camFile.Size() == 0 {
t.Errorf("[%v] cam image %v is empty", c.setDir, camFile.Name())
}
}
}
}