github.com/hirochachacha/plua@v0.0.0-20170217012138-c82f520cc725/internal/tables/table_test.go (about) 1 package tables 2 3 import ( 4 "testing" 5 6 "github.com/hirochachacha/plua/object" 7 ) 8 9 func TestTableArray(t *testing.T) { 10 tab := NewTableSize(0, 0) 11 tab.Set(object.Integer(1), object.Integer(5)) 12 if tab.Get(object.Integer(1)) != object.Integer(5) { 13 t.Fail() 14 } 15 tab.Set(object.Integer(2), object.Integer(6)) 16 if tab.Get(object.Integer(2)) != object.Integer(6) { 17 t.Fail() 18 } 19 tab.Set(object.Integer(3), object.Integer(7)) 20 if tab.Get(object.Integer(3)) != object.Integer(7) { 21 t.Fail() 22 } 23 tab.Set(object.Integer(5), object.Integer(9)) 24 if tab.Get(object.Integer(5)) != object.Integer(9) { 25 t.Fail() 26 } 27 if tab.Len() != 3 { 28 t.Fail() 29 } 30 tab.Set(object.Integer(4), object.Integer(8)) 31 if tab.Get(object.Integer(4)) != object.Integer(8) { 32 t.Fail() 33 } 34 if tab.Len() != 5 { 35 t.Fail() 36 } 37 38 tab.Set(object.Integer(3), nil) 39 if tab.Get(object.Integer(3)) != nil { 40 t.Fail() 41 } 42 43 k, v, _ := tab.Next(nil) 44 if k != object.Integer(1) || v != object.Integer(5) { 45 t.Fail() 46 } 47 k, v, _ = tab.Next(k) 48 if k != object.Integer(2) || v != object.Integer(6) { 49 t.Fail() 50 } 51 k, v, _ = tab.Next(k) 52 if k != object.Integer(4) || v != object.Integer(8) { 53 t.Fail() 54 } 55 k, v, _ = tab.Next(k) 56 if k != object.Integer(5) || v != object.Integer(9) { 57 t.Fail() 58 } 59 k, v, _ = tab.Next(k) 60 if k != nil || v != nil { 61 t.Fail() 62 } 63 } 64 65 func TestConcurrentTableArray(t *testing.T) { 66 tab := NewConcurrentTableSize(0, 0) 67 tab.Set(object.Integer(1), object.Integer(5)) 68 if tab.Get(object.Integer(1)) != object.Integer(5) { 69 t.Fail() 70 } 71 tab.Set(object.Integer(2), object.Integer(6)) 72 if tab.Get(object.Integer(2)) != object.Integer(6) { 73 t.Fail() 74 } 75 tab.Set(object.Integer(3), object.Integer(7)) 76 if tab.Get(object.Integer(3)) != object.Integer(7) { 77 t.Fail() 78 } 79 tab.Set(object.Integer(5), object.Integer(9)) 80 if tab.Get(object.Integer(5)) != object.Integer(9) { 81 t.Fail() 82 } 83 if tab.Len() != 3 { 84 t.Fail() 85 } 86 tab.Set(object.Integer(4), object.Integer(8)) 87 if tab.Get(object.Integer(4)) != object.Integer(8) { 88 t.Fail() 89 } 90 if tab.Len() != 5 { 91 t.Fail() 92 } 93 94 tab.Set(object.Integer(3), nil) 95 if tab.Get(object.Integer(3)) != nil { 96 t.Fail() 97 } 98 99 k, v, _ := tab.Next(nil) 100 if k != object.Integer(1) || v != object.Integer(5) { 101 t.Fail() 102 } 103 k, v, _ = tab.Next(k) 104 if k != object.Integer(2) || v != object.Integer(6) { 105 t.Fail() 106 } 107 k, v, _ = tab.Next(k) 108 if k != object.Integer(4) || v != object.Integer(8) { 109 t.Fail() 110 } 111 k, v, _ = tab.Next(k) 112 if k != object.Integer(5) || v != object.Integer(9) { 113 t.Fail() 114 } 115 k, v, _ = tab.Next(k) 116 if k != nil || v != nil { 117 t.Fail() 118 } 119 }