Add support for field meta data to binapi-generator
[govpp.git] / cmd / binapi-generator / parse_test.go
1 package main
2
3 import (
4         "testing"
5 )
6
7 func TestBinapiTypeSizes(t *testing.T) {
8         tests := []struct {
9                 name    string
10                 input   string
11                 expsize int
12         }{
13                 {name: "basic1", input: "u8", expsize: 1},
14                 {name: "basic2", input: "i8", expsize: 1},
15                 {name: "basic3", input: "u16", expsize: 2},
16                 {name: "basic4", input: "i32", expsize: 4},
17                 {name: "invalid1", input: "x", expsize: -1},
18         }
19         for _, test := range tests {
20                 t.Run(test.name, func(t *testing.T) {
21                         size := getBinapiTypeSize(test.input)
22                         if size != test.expsize {
23                                 t.Errorf("expected %d, got %d", test.expsize, size)
24                         }
25                 })
26         }
27 }
28
29 func TestSizeOfType(t *testing.T) {
30         tests := []struct {
31                 name    string
32                 input   Type
33                 expsize int
34         }{
35                 {name: "basic1",
36                         input: Type{Fields: []Field{
37                                 {Type: "u8"},
38                         }},
39                         expsize: 1,
40                 },
41                 {name: "basic2",
42                         input: Type{Fields: []Field{
43                                 {Type: "u8", Length: 4},
44                         }},
45                         expsize: 4,
46                 },
47                 {name: "basic3",
48                         input: Type{Fields: []Field{
49                                 {Type: "u8", Length: 16},
50                         }},
51                         expsize: 16,
52                 },
53                 {name: "invalid1",
54                         input: Type{Fields: []Field{
55                                 {Type: "x", Length: 16},
56                         }},
57                         expsize: 0,
58                 },
59         }
60         for _, test := range tests {
61                 t.Run(test.name, func(t *testing.T) {
62                         size := getSizeOfType(&test.input)
63                         if size != test.expsize {
64                                 t.Errorf("expected %d, got %d", test.expsize, size)
65                         }
66                 })
67         }
68 }