|
1 | 1 | package excelorm |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "github.com/stretchr/testify/assert" |
4 | 5 | "testing" |
5 | 6 | "time" |
6 | 7 | ) |
@@ -33,12 +34,54 @@ type Sheet2 struct { |
33 | 34 | Col8 *float64 `excel_header:"float pointer"` |
34 | 35 | Col9 *bool `excel_header:"bool pointer"` |
35 | 36 | Col10 *time.Time `excel_header:"time pointer"` |
| 37 | + Col11 float32 `excel_header:"float32"` |
36 | 38 | } |
37 | 39 |
|
38 | 40 | func (Sheet2) SheetName() string { |
39 | 41 | return "sheet2" |
40 | 42 | } |
41 | 43 |
|
| 44 | +type Sheet3 struct { |
| 45 | + Col1 string `excel_header:"string"` |
| 46 | +} |
| 47 | + |
| 48 | +func (Sheet3) SheetName() string { |
| 49 | + return "" |
| 50 | +} |
| 51 | + |
| 52 | +type Sheet4 int |
| 53 | + |
| 54 | +func (Sheet4) SheetName() string { |
| 55 | + return "sheet4" |
| 56 | +} |
| 57 | + |
| 58 | +type Sheet5 struct { |
| 59 | + Col1 string |
| 60 | +} |
| 61 | + |
| 62 | +func (Sheet5) SheetName() string { |
| 63 | + return "sheet5" |
| 64 | +} |
| 65 | + |
| 66 | +type Sheet6 struct { |
| 67 | + Col1 map[string]string `excel_header:"map"` |
| 68 | +} |
| 69 | + |
| 70 | +func (Sheet6) SheetName() string { |
| 71 | + return "sheet6" |
| 72 | +} |
| 73 | + |
| 74 | +type subStruct struct { |
| 75 | + Field string `excel_header:"field"` |
| 76 | +} |
| 77 | +type Sheet7 struct { |
| 78 | + SubStruct subStruct `excel_header:"subStruct"` |
| 79 | +} |
| 80 | + |
| 81 | +func (Sheet7) SheetName() string { |
| 82 | + return "sheet7" |
| 83 | +} |
| 84 | + |
42 | 85 | func TestBuild(t *testing.T) { |
43 | 86 | sheet1 := Sheet1{ |
44 | 87 | Col1: "string", |
@@ -68,10 +111,51 @@ func TestBuild(t *testing.T) { |
68 | 111 | var models []SheetModel |
69 | 112 | models = append(models, sheet1, sheet1, sheet1, sheet1, sheet1, sheet2, sheet2, sheet2, sheet2, sheet2) |
70 | 113 |
|
71 | | - err := Build("test.xlsx", models) |
| 114 | + err := Build("test1.xlsx", models) |
72 | 115 | if err != nil { |
73 | 116 | t.Error(err) |
74 | 117 | } |
| 118 | + |
| 119 | + sheet3 := Sheet3{ |
| 120 | + Col1: "string", |
| 121 | + } |
| 122 | + |
| 123 | + models = append(models, sheet3) |
| 124 | + err = Build("test3.xlsx", models) |
| 125 | + assert.EqualError(t, err, "sheetModel must have a sheet name") |
| 126 | + |
| 127 | + sheet4 := Sheet4(1) |
| 128 | + models = make([]SheetModel, 0) |
| 129 | + models = append(models, sheet4) |
| 130 | + err = Build("test4.xlsx", models) |
| 131 | + assert.EqualError(t, err, "sheetModel must be struct") |
| 132 | + |
| 133 | + sheet5 := Sheet5{ |
| 134 | + Col1: "string", |
| 135 | + } |
| 136 | + models = make([]SheetModel, 0) |
| 137 | + models = append(models, sheet5) |
| 138 | + err = Build("test5.xlsx", models) |
| 139 | + |
| 140 | + sheet6 := Sheet6{ |
| 141 | + Col1: map[string]string{ |
| 142 | + "key": "value", |
| 143 | + }, |
| 144 | + } |
| 145 | + models = make([]SheetModel, 0) |
| 146 | + models = append(models, sheet6) |
| 147 | + err = Build("test6.xlsx", models) |
| 148 | + assert.EqualError(t, err, "unsupported type map") |
| 149 | + |
| 150 | + sheet7 := Sheet7{ |
| 151 | + SubStruct: subStruct{ |
| 152 | + Field: "field", |
| 153 | + }, |
| 154 | + } |
| 155 | + models = make([]SheetModel, 0) |
| 156 | + models = append(models, sheet7) |
| 157 | + err = Build("test7.xlsx", models) |
| 158 | + assert.EqualError(t, err, "unsupported type excelorm.subStruct") |
75 | 159 | } |
76 | 160 |
|
77 | 161 | func TestWithTimeFormatLayout(t *testing.T) { |
|
0 commit comments