Skip to content

Commit b57a856

Browse files
committed
[WIP] Add HashTableTests
1 parent 08cd4e2 commit b57a856

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
//
2+
// HashTableTests.swift
3+
// OpenAttributeGraphCxxTests
4+
5+
import OpenAttributeGraphCxx_Private.Util
6+
import Testing
7+
8+
struct HashTableTests {
9+
@Test
10+
func untypedTableBasicOperations() {
11+
let table = util.UntypedTable.create()
12+
defer { util.UntypedTable.destroy(table) }
13+
14+
// Test empty table
15+
#expect(table.empty())
16+
#expect(table.count() == 0)
17+
18+
// Test insert operations
19+
var key1 = "key1"
20+
var value1 = "value1"
21+
22+
let inserted = key1.withUnsafeBytes { keyPtr in
23+
value1.withUnsafeBytes { valuePtr in
24+
table.insert(keyPtr.baseAddress, valuePtr.baseAddress)
25+
}
26+
}
27+
#expect(inserted)
28+
#expect(!table.empty())
29+
#expect(table.count() == 1)
30+
}
31+
32+
@Test
33+
func untypedTableMultipleEntries() {
34+
let table = util.UntypedTable.create()
35+
defer { util.UntypedTable.destroy(table) }
36+
37+
// Insert multiple key-value pairs
38+
var keys: [String] = []
39+
var values: [String] = []
40+
41+
for i in 0..<5 {
42+
keys.append("key\(i)")
43+
values.append("value\(i)")
44+
}
45+
46+
for i in 0..<5 {
47+
let key = withUnsafePointer(to: keys[i]) { $0 }
48+
let value = withUnsafePointer(to: values[i]) { $0 }
49+
#expect(table.insert(key, value))
50+
}
51+
52+
#expect(table.count() == 5)
53+
}
54+
55+
@Test
56+
func untypedTableRemoval() {
57+
let table = util.UntypedTable.create()
58+
defer { util.UntypedTable.destroy(table) }
59+
60+
// Insert entries
61+
let key1 = withUnsafePointer(to: "key1") { $0 }
62+
let value1 = withUnsafePointer(to: "value1") { $0 }
63+
let key2 = withUnsafePointer(to: "key2") { $0 }
64+
let value2 = withUnsafePointer(to: "value2") { $0 }
65+
66+
#expect(table.insert(key1, value1))
67+
#expect(table.insert(key2, value2))
68+
#expect(table.count() == 2)
69+
70+
// Remove one entry
71+
#expect(table.remove(key1))
72+
#expect(table.count() == 1)
73+
74+
// Try to remove non-existent key
75+
#expect(!table.remove(key1))
76+
#expect(table.count() == 1)
77+
78+
// Remove remaining entry
79+
#expect(table.remove(key2))
80+
#expect(table.count() == 0)
81+
#expect(table.empty())
82+
}
83+
}

0 commit comments

Comments
 (0)