summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sqlite.zig32
1 files changed, 18 insertions, 14 deletions
diff --git a/sqlite.zig b/sqlite.zig
index c11f1a4..c2ec86d 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -638,12 +638,13 @@ const TestUser = struct {
638 id: usize, 638 id: usize,
639 name: []const u8, 639 name: []const u8,
640 age: usize, 640 age: usize,
641 weight: f32,
641}; 642};
642 643
643const test_users = &[_]TestUser{ 644const test_users = &[_]TestUser{
644 .{ .id = 20, .name = "Vincent", .age = 33 }, 645 .{ .id = 20, .name = "Vincent", .age = 33, .weight = 85.4 },
645 .{ .id = 40, .name = "Julien", .age = 35 }, 646 .{ .id = 40, .name = "Julien", .age = 35, .weight = 100.3 },
646 .{ .id = 60, .name = "José", .age = 40 }, 647 .{ .id = 60, .name = "José", .age = 40, .weight = 240.2 },
647}; 648};
648 649
649fn addTestData(db: *Db) !void { 650fn addTestData(db: *Db) !void {
@@ -651,7 +652,8 @@ fn addTestData(db: *Db) !void {
651 \\CREATE TABLE user( 652 \\CREATE TABLE user(
652 \\ id integer PRIMARY KEY, 653 \\ id integer PRIMARY KEY,
653 \\ name text, 654 \\ name text,
654 \\ age integer 655 \\ age integer,
656 \\ weight real
655 \\) 657 \\)
656 , 658 ,
657 \\CREATE TABLE article( 659 \\CREATE TABLE article(
@@ -669,7 +671,7 @@ fn addTestData(db: *Db) !void {
669 } 671 }
670 672
671 for (test_users) |user| { 673 for (test_users) |user| {
672 try db.exec("INSERT INTO user(id, name, age) VALUES(?{usize}, ?{[]const u8}, ?{usize})", user); 674 try db.exec("INSERT INTO user(id, name, age, weight) VALUES(?{usize}, ?{[]const u8}, ?{usize}, ?{f32})", user);
673 675
674 const rows_inserted = db.rowsAffected(); 676 const rows_inserted = db.rowsAffected();
675 testing.expectEqual(@as(usize, 1), rows_inserted); 677 testing.expectEqual(@as(usize, 1), rows_inserted);
@@ -746,7 +748,7 @@ test "sqlite: read a single user into a struct" {
746 try db.init(testing.allocator, .{ .mode = dbMode() }); 748 try db.init(testing.allocator, .{ .mode = dbMode() });
747 try addTestData(&db); 749 try addTestData(&db);
748 750
749 var stmt = try db.prepare("SELECT id, name, age FROM user WHERE id = ?{usize}"); 751 var stmt = try db.prepare("SELECT id, name, age, weight FROM user WHERE id = ?{usize}");
750 defer stmt.deinit(); 752 defer stmt.deinit();
751 753
752 var rows = try stmt.all( 754 var rows = try stmt.all(
@@ -769,7 +771,7 @@ test "sqlite: read all users into a struct" {
769 try db.init(testing.allocator, .{ .mode = dbMode() }); 771 try db.init(testing.allocator, .{ .mode = dbMode() });
770 try addTestData(&db); 772 try addTestData(&db);
771 773
772 var stmt = try db.prepare("SELECT id, name, age FROM user"); 774 var stmt = try db.prepare("SELECT id, name, age, weight FROM user");
773 defer stmt.deinit(); 775 defer stmt.deinit();
774 776
775 var rows = try stmt.all( 777 var rows = try stmt.all(
@@ -794,7 +796,7 @@ test "sqlite: read in an anonymous struct" {
794 try db.init(testing.allocator, .{ .mode = dbMode() }); 796 try db.init(testing.allocator, .{ .mode = dbMode() });
795 try addTestData(&db); 797 try addTestData(&db);
796 798
797 var stmt = try db.prepare("SELECT id, name, name, age, id FROM user WHERE id = ?{usize}"); 799 var stmt = try db.prepare("SELECT id, name, name, age, id, weight FROM user WHERE id = ?{usize}");
798 defer stmt.deinit(); 800 defer stmt.deinit();
799 801
800 var row = try stmt.one( 802 var row = try stmt.one(
@@ -804,6 +806,7 @@ test "sqlite: read in an anonymous struct" {
804 name_2: [200:0xAD]u8, 806 name_2: [200:0xAD]u8,
805 age: usize, 807 age: usize,
806 is_id: bool, 808 is_id: bool,
809 weight: f64,
807 }, 810 },
808 .{ .allocator = &arena.allocator }, 811 .{ .allocator = &arena.allocator },
809 .{ .id = @as(usize, 20) }, 812 .{ .id = @as(usize, 20) },
@@ -816,6 +819,7 @@ test "sqlite: read in an anonymous struct" {
816 testing.expectEqualStrings(exp.name, mem.spanZ(&row.?.name_2)); 819 testing.expectEqualStrings(exp.name, mem.spanZ(&row.?.name_2));
817 testing.expectEqual(exp.age, row.?.age); 820 testing.expectEqual(exp.age, row.?.age);
818 testing.expect(row.?.is_id); 821 testing.expect(row.?.is_id);
822 testing.expectEqual(exp.weight, @floatCast(f32, row.?.weight));
819} 823}
820 824
821test "sqlite: read in a Text struct" { 825test "sqlite: read in a Text struct" {
@@ -989,13 +993,13 @@ test "sqlite: statement reset" {
989 993
990 // Add data 994 // Add data
991 995
992 var stmt = try db.prepare("INSERT INTO user(id, name, age) VALUES(?{usize}, ?{[]const u8}, ?{usize})"); 996 var stmt = try db.prepare("INSERT INTO user(id, name, age, weight) VALUES(?{usize}, ?{[]const u8}, ?{usize}, ?{f32})");
993 defer stmt.deinit(); 997 defer stmt.deinit();
994 998
995 const users = &[_]TestUser{ 999 const users = &[_]TestUser{
996 .{ .id = 200, .name = "Vincent", .age = 33 }, 1000 .{ .id = 200, .name = "Vincent", .age = 33, .weight = 10.0 },
997 .{ .id = 400, .name = "Julien", .age = 35 }, 1001 .{ .id = 400, .name = "Julien", .age = 35, .weight = 12.0 },
998 .{ .id = 600, .name = "José", .age = 40 }, 1002 .{ .id = 600, .name = "José", .age = 40, .weight = 14.0 },
999 }; 1003 };
1000 1004
1001 for (users) |user| { 1005 for (users) |user| {
@@ -1020,14 +1024,14 @@ test "sqlite: statement iterator" {
1020 try db.exec("DELETE FROM user", .{}); 1024 try db.exec("DELETE FROM user", .{});
1021 1025
1022 // Add data 1026 // Add data
1023 var stmt = try db.prepare("INSERT INTO user(id, name, age) VALUES(?{usize}, ?{[]const u8}, ?{usize})"); 1027 var stmt = try db.prepare("INSERT INTO user(id, name, age, weight) VALUES(?{usize}, ?{[]const u8}, ?{usize}, ?{f32})");
1024 defer stmt.deinit(); 1028 defer stmt.deinit();
1025 1029
1026 var expected_rows = std.ArrayList(TestUser).init(allocator); 1030 var expected_rows = std.ArrayList(TestUser).init(allocator);
1027 var i: usize = 0; 1031 var i: usize = 0;
1028 while (i < 20) : (i += 1) { 1032 while (i < 20) : (i += 1) {
1029 const name = try std.fmt.allocPrint(allocator, "Vincent {}", .{i}); 1033 const name = try std.fmt.allocPrint(allocator, "Vincent {}", .{i});
1030 const user = TestUser{ .id = i, .name = name, .age = i + 200 }; 1034 const user = TestUser{ .id = i, .name = name, .age = i + 200, .weight = @intToFloat(f32, i + 200) };
1031 1035
1032 try expected_rows.append(user); 1036 try expected_rows.append(user);
1033 1037