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  }