parser_test.go
1package waypoint
2
3import (
4 "encoding/json"
5 "os"
6 "path/filepath"
7 "reflect"
8 "testing"
9
10 "git.kilimanjaro.io/ygo"
11)
12
13func TestExtractWaypoints(t *testing.T) {
14 // Load test data from ysweet file
15 testDataPath := filepath.Join("testdata", "test-waypoints", "data.ysweet")
16 doc, err := ygo.NewDocFromYSweetFile(testDataPath)
17 if err != nil {
18 t.Fatalf("failed to load ysweet file: %v", err)
19 }
20 defer doc.Destroy()
21
22 // Extract waypoints
23 waypoints, err := ExtractWaypoints(doc)
24 if err != nil {
25 t.Fatalf("failed to extract waypoints: %v", err)
26 }
27
28 // Load expected output
29 expectedPath := filepath.Join("testdata", "test-waypoints", "expects.json")
30 expectedData, err := os.ReadFile(expectedPath)
31 if err != nil {
32 t.Fatalf("failed to read expected output: %v", err)
33 }
34
35 var expected []Waypoint
36 if err := json.Unmarshal(expectedData, &expected); err != nil {
37 t.Fatalf("failed to unmarshal expected output: %v", err)
38 }
39
40 // Compare results
41 if len(waypoints) != len(expected) {
42 t.Errorf("expected %d waypoints, got %d", len(expected), len(waypoints))
43 }
44
45 // Compare each waypoint
46 for i, exp := range expected {
47 if i >= len(waypoints) {
48 break
49 }
50 got := waypoints[i]
51
52 if !reflect.DeepEqual(got, exp) {
53 t.Errorf("waypoint %d mismatch:\nexpected: %+v\ngot: %+v", i, exp, got)
54 }
55 }
56}
57
58func TestExtractWaypointsEmpty(t *testing.T) {
59 // Create empty document
60 doc, err := ygo.NewDoc()
61 if err != nil {
62 t.Fatalf("failed to create doc: %v", err)
63 }
64 defer doc.Destroy()
65
66 // Extract waypoints from empty document
67 waypoints, err := ExtractWaypoints(doc)
68 if err != nil {
69 t.Errorf("unexpected error for empty document: %v", err)
70 }
71
72 if len(waypoints) != 0 {
73 t.Errorf("expected 0 waypoints for empty document, got %d", len(waypoints))
74 }
75}