...

Source file src/github.com/benbjohnson/immutable/sets_test.go

Documentation: github.com/benbjohnson/immutable

     1  package immutable
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestSetsPut(t *testing.T) {
     8  	s := NewSet[string](nil)
     9  	s2 := s.Add("1").Add("1")
    10  	s2.Add("2")
    11  	if s.Len() != 0 {
    12  		t.Fatalf("Unexpected mutation of set")
    13  	}
    14  	if s.Has("1") {
    15  		t.Fatalf("Unexpected set element")
    16  	}
    17  	if s2.Len() != 1 {
    18  		t.Fatalf("Unexpected non-mutation of set")
    19  	}
    20  	if !s2.Has("1") {
    21  		t.Fatalf("Set element missing")
    22  	}
    23  	itr := s2.Iterator()
    24  	counter := 0
    25  	for !itr.Done() {
    26  		i, v := itr.Next()
    27  		t.Log(i, v)
    28  		counter++
    29  	}
    30  	if counter != 1 {
    31  		t.Fatalf("iterator wrong length")
    32  	}
    33  }
    34  
    35  func TestSetsDelete(t *testing.T) {
    36  	s := NewSet[string](nil)
    37  	s2 := s.Add("1")
    38  	s3 := s.Delete("1")
    39  	if s2.Len() != 1 {
    40  		t.Fatalf("Unexpected non-mutation of set")
    41  	}
    42  	if !s2.Has("1") {
    43  		t.Fatalf("Set element missing")
    44  	}
    45  	if s3.Len() != 0 {
    46  		t.Fatalf("Unexpected set length after delete")
    47  	}
    48  	if s3.Has("1") {
    49  		t.Fatalf("Unexpected set element after delete")
    50  	}
    51  }
    52  
    53  func TestSortedSetsPut(t *testing.T) {
    54  	s := NewSortedSet[string](nil)
    55  	s2 := s.Add("1").Add("1").Add("0")
    56  	if s.Len() != 0 {
    57  		t.Fatalf("Unexpected mutation of set")
    58  	}
    59  	if s.Has("1") {
    60  		t.Fatalf("Unexpected set element")
    61  	}
    62  	if s2.Len() != 2 {
    63  		t.Fatalf("Unexpected non-mutation of set")
    64  	}
    65  	if !s2.Has("1") {
    66  		t.Fatalf("Set element missing")
    67  	}
    68  
    69  	itr := s2.Iterator()
    70  	counter := 0
    71  	for !itr.Done() {
    72  		i, v := itr.Next()
    73  		t.Log(i, v)
    74  		if counter == 0 && i != "0" {
    75  			t.Fatalf("sort did not work for first el")
    76  		}
    77  		if counter == 1 && i != "1" {
    78  			t.Fatalf("sort did not work for second el")
    79  		}
    80  		counter++
    81  	}
    82  	if counter != 2 {
    83  		t.Fatalf("iterator wrong length")
    84  	}
    85  }
    86  
    87  func TestSortedSetsDelete(t *testing.T) {
    88  	s := NewSortedSet[string](nil)
    89  	s2 := s.Add("1")
    90  	s3 := s.Delete("1")
    91  	if s2.Len() != 1 {
    92  		t.Fatalf("Unexpected non-mutation of set")
    93  	}
    94  	if !s2.Has("1") {
    95  		t.Fatalf("Set element missing")
    96  	}
    97  	if s3.Len() != 0 {
    98  		t.Fatalf("Unexpected set length after delete")
    99  	}
   100  	if s3.Has("1") {
   101  		t.Fatalf("Unexpected set element after delete")
   102  	}
   103  }
   104  

View as plain text