diff options
| author | 2020-12-21 01:11:04 +0100 | |
|---|---|---|
| committer | 2020-12-21 01:11:04 +0100 | |
| commit | 4fd79eb49a8d93445574c617d4c2df9c685d0935 (patch) | |
| tree | f3f0dae327d6e9aa8a3fa03955d016bf45a8a144 /sqlite.zig | |
| parent | make readInt, readFloat, readBool return a specific type and column (diff) | |
| download | zig-sqlite-4fd79eb49a8d93445574c617d4c2df9c685d0935.tar.gz zig-sqlite-4fd79eb49a8d93445574c617d4c2df9c685d0935.tar.xz zig-sqlite-4fd79eb49a8d93445574c617d4c2df9c685d0935.zip | |
add a weight real column to the test table
Diffstat (limited to 'sqlite.zig')
| -rw-r--r-- | sqlite.zig | 32 |
1 files changed, 18 insertions, 14 deletions
| @@ -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 | ||
| 643 | const test_users = &[_]TestUser{ | 644 | const 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 | ||
| 649 | fn addTestData(db: *Db) !void { | 650 | fn 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 | ||
| 821 | test "sqlite: read in a Text struct" { | 825 | test "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 | ||