forked from SAP/go-dblib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
type_unichar.go
74 lines (56 loc) · 1.61 KB
/
type_unichar.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 UniChar string -columndef unichar(30) null -compare compareChar"; DO NOT EDIT.
package integration
import (
"database/sql"
"testing"
)
// DoTestUniChar tests the handling of the UniChar.
func DoTestUniChar(t *testing.T) {
TestForEachDB("TestUniChar", t, testUniChar)
//
}
func testUniChar(t *testing.T, db *sql.DB, tableName string) {
// insert is the amount of insertions (see fn SetupTableInsert)
insert := 2
pass := make([]interface{}, len(samplesUniChar))
mySamples := make([]string, len(samplesUniChar)*insert)
for i, sample := range samplesUniChar {
mySample := sample
pass[i] = mySample
// Add passed sample for the later validation (for every
// insert)
for j := 0; j < insert; j++ {
mySamples[i+(len(samplesUniChar)*j)] = mySample
}
}
rows, teardownFn, err := SetupTableInsert(db, tableName, "unichar(30) null", pass...)
if err != nil {
t.Errorf("Error preparing table: %v", err)
return
}
defer rows.Close()
defer teardownFn()
i := 0
var recv string
for rows.Next() {
if err := rows.Scan(&recv); err != nil {
t.Errorf("Scan failed on %dth scan: %v", i, err)
continue
}
if compareChar(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)
}
}