github.com/frodejac/aoc-2022@v0.0.0-20221213081734-037c741b1c89/pkg/datastructures/stack/stack_test.go (about)

     1  package stack
     2  
     3  import "testing"
     4  
     5  func TestPush(t *testing.T) {
     6  	s := New[interface{}](nil)
     7  	s.Push(1)
     8  	if s.Peek() != 1 {
     9  		t.Fail()
    10  	}
    11  }
    12  
    13  func TestPop(t *testing.T) {
    14  	s := New[interface{}](nil)
    15  	s.Push(1)
    16  	s.Push(2)
    17  	s.Push(3)
    18  	if s.Pop() != 3 {
    19  		t.Fail()
    20  	}
    21  }
    22  
    23  func TestPushN(t *testing.T) {
    24  	s := New[interface{}](nil)
    25  	s.PushN([]interface{}{1, 2, 3})
    26  	if s.Pop() != 3 {
    27  		t.Fail()
    28  	}
    29  }
    30  
    31  func TestPopN(t *testing.T) {
    32  	s := New[interface{}](nil)
    33  	s.PushN([]interface{}{1, 2, 3})
    34  	if s.PopN(2)[0] != 2 {
    35  		t.Fail()
    36  	}
    37  }
    38  
    39  func TestPeek(t *testing.T) {
    40  	s := New[interface{}](nil)
    41  	s.Push(1)
    42  	s.Push(2)
    43  	s.Push(3)
    44  	if s.Peek() != 3 {
    45  		t.Fail()
    46  	}
    47  }
    48  
    49  func TestReverse(t *testing.T) {
    50  	s := New[interface{}](nil)
    51  	s.PushN([]interface{}{1, 2, 3})
    52  	s.Reverse()
    53  	if s.Pop() != 1 {
    54  		t.Fail()
    55  	}
    56  }
    57  
    58  func TestPushLeft(t *testing.T) {
    59  	s := New[interface{}](nil)
    60  	s.PushLeft(1)
    61  	s.PushLeft(2)
    62  	s.PushLeft(3)
    63  	if s.Pop() != 1 {
    64  		t.Fail()
    65  	}
    66  }
    67  
    68  func TestPopLeft(t *testing.T) {
    69  	s := New[interface{}](nil)
    70  	s.PushN([]interface{}{1, 2, 3})
    71  	if s.PopLeft() != 1 {
    72  		t.Fail()
    73  	}
    74  }