Skip to content

Commit 7b64610

Browse files
committed
Test endianness.
1 parent e0a2099 commit 7b64610

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

tests/endian_test.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package tests
2+
3+
import (
4+
"bytes"
5+
"encoding/binary"
6+
"log"
7+
"strconv"
8+
"testing"
9+
10+
"github.com/ncruces/go-sqlite3"
11+
)
12+
13+
func Test_endianness(t *testing.T) {
14+
big := binary.BigEndian.AppendUint64(nil, 0x1234567890ABCDEF)
15+
little := binary.LittleEndian.AppendUint64(nil, 0x1234567890ABCDEF)
16+
native := binary.NativeEndian.AppendUint64(nil, 0x1234567890ABCDEF)
17+
switch {
18+
case bytes.Equal(big, native):
19+
t.Log("Platform is big endian")
20+
case bytes.Equal(little, native):
21+
t.Log("Platform is little endian")
22+
default:
23+
t.Fatal("Platform is middle endian")
24+
}
25+
26+
db, err := sqlite3.Open(":memory:")
27+
if err != nil {
28+
log.Fatal(err)
29+
}
30+
defer db.Close()
31+
32+
err = db.Exec(`CREATE TABLE test (col)`)
33+
if err != nil {
34+
log.Fatal(err)
35+
}
36+
37+
const value = -9223372036854775808
38+
{
39+
stmt, _, err := db.Prepare(`INSERT INTO test VALUES (?)`)
40+
if err != nil {
41+
t.Fatal(err)
42+
}
43+
defer stmt.Close()
44+
45+
err = stmt.BindInt64(1, value)
46+
if err != nil {
47+
t.Fatal(err)
48+
}
49+
50+
err = stmt.Exec()
51+
if err != nil {
52+
t.Fatal(err)
53+
}
54+
}
55+
{
56+
stmt, _, err := db.Prepare(`SELECT * FROM test`)
57+
if err != nil {
58+
t.Fatal(err)
59+
}
60+
defer stmt.Close()
61+
62+
if stmt.Step() {
63+
if got := stmt.ColumnInt(0); got != value {
64+
t.Errorf("got %d, want %d", got, value)
65+
}
66+
if got := stmt.ColumnText(0); got != strconv.FormatInt(value, 10) {
67+
t.Errorf("got %s, want %d", got, value)
68+
}
69+
}
70+
if err != nil {
71+
t.Fatal(err)
72+
}
73+
}
74+
75+
}

0 commit comments

Comments
 (0)