forked from SAP/go-dblib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
type_nullnvarchar.go
74 lines (56 loc) · 1.7 KB
/
type_nullnvarchar.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// SPDX-FileCopyrightText: 2023 SAP SE
//
// SPDX-License-Identifier: Apache-2.0
// Code generated by "gen_type NullNVarChar sql.NullString -columndef nvarchar(13) null -compare compareNullChar"; DO NOT EDIT.
package integration
import (
"database/sql"
"testing"
)
// DoTestNullNVarChar tests the handling of the NullNVarChar.
func DoTestNullNVarChar(t *testing.T) {
TestForEachDB("TestNullNVarChar", t, testNullNVarChar)
//
}
func testNullNVarChar(t *testing.T, db *sql.DB, tableName string) {
// insert is the amount of insertions (see fn SetupTableInsert)
insert := 2
pass := make([]interface{}, len(samplesNullNVarChar))
mySamples := make([]sql.NullString, len(samplesNullNVarChar)*insert)
for i, sample := range samplesNullNVarChar {
mySample := sample
pass[i] = mySample
// Add passed sample for the later validation (for every
// insert)
for j := 0; j < insert; j++ {
mySamples[i+(len(samplesNullNVarChar)*j)] = mySample
}
}
rows, teardownFn, err := SetupTableInsert(db, tableName, "nvarchar(13) null", pass...)
if err != nil {
t.Errorf("Error preparing table: %v", err)
return
}
defer rows.Close()
defer teardownFn()
i := 0
var recv sql.NullString
for rows.Next() {
if err := rows.Scan(&recv); err != nil {
t.Errorf("Scan failed on %dth scan: %v", i, err)
continue
}
if compareNullChar(recv, mySamples[i]) {
t.Errorf("Received value does not match passed parameter")
t.Errorf("Expected: %v", mySamples[i])
t.Errorf("Received: %v", recv)
}
i++
}
if err := rows.Err(); err != nil {
t.Errorf("Error preparing rows: %v", err)
}
if i != len(pass)*insert {
t.Errorf("Only read %d values from database, expected to read %d", i, len(pass)*insert)
}
}