Some checks failed
		
		
	
	test / test (push) Has been cancelled
				
			So the performance of this only surpasses list when you approach 100 items (and that is not including the need to traverse through the linked list to find the insertion point) so this might be the last commit
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Gleam
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Gleam
		
	
	
	
	
	
import dllist
 | 
						|
import gleam/dict
 | 
						|
import startest
 | 
						|
 | 
						|
pub fn main() -> Nil {
 | 
						|
  startest.run(startest.default_config())
 | 
						|
}
 | 
						|
 | 
						|
pub fn new_tests() {
 | 
						|
  startest.describe("new instance", [
 | 
						|
    startest.it("terminated list", fn() {
 | 
						|
      assert dllist.new() == dllist.DLList(1, 0, dict.from_list([]))
 | 
						|
    }),
 | 
						|
    startest.it("cyclic list", fn() {
 | 
						|
      assert dllist.new_cyclic() == dllist.CyclicList(1, 0, dict.from_list([]))
 | 
						|
    }),
 | 
						|
  ])
 | 
						|
}
 | 
						|
 | 
						|
pub fn is_empty_tests() {
 | 
						|
  startest.describe("is_emtpy", [
 | 
						|
    startest.it("terminated list", fn() {
 | 
						|
      assert dllist.is_empty(dllist.new())
 | 
						|
 | 
						|
      assert !dllist.is_empty(dllist.new() |> dllist.insert(1))
 | 
						|
    }),
 | 
						|
    startest.it("cyclic list", fn() {
 | 
						|
      assert dllist.is_empty(dllist.new_cyclic())
 | 
						|
 | 
						|
      assert !dllist.is_empty(dllist.new_cyclic() |> dllist.insert(1))
 | 
						|
    }),
 | 
						|
  ])
 | 
						|
}
 | 
						|
 | 
						|
pub fn from_list_tests() {
 | 
						|
  startest.describe("from_list", [
 | 
						|
    startest.it("terminated list", fn() {
 | 
						|
      assert dllist.is_empty(dllist.from_list([]))
 | 
						|
 | 
						|
      assert !dllist.is_empty(dllist.from_list([1]))
 | 
						|
 | 
						|
      assert dllist.from_list([1]) |> dllist.get == Ok(1)
 | 
						|
      assert dllist.from_list([1, 2, 3, 4]) |> dllist.get == Ok(4)
 | 
						|
 | 
						|
      assert dllist.from_list([1]) |> dllist.to_list == [1]
 | 
						|
      assert dllist.from_list([1, 2, 3, 4]) |> dllist.to_list == [1, 2, 3, 4]
 | 
						|
    }),
 | 
						|
    startest.it("cyclic list", fn() {
 | 
						|
      assert dllist.is_empty(dllist.from_list_cyclic([]))
 | 
						|
 | 
						|
      assert !dllist.is_empty(dllist.from_list_cyclic([1]))
 | 
						|
 | 
						|
      assert dllist.from_list_cyclic([1]) |> dllist.get == Ok(1)
 | 
						|
      assert dllist.from_list_cyclic([1, 2, 3, 4]) |> dllist.get == Ok(4)
 | 
						|
 | 
						|
      assert dllist.from_list_cyclic([1]) |> dllist.to_list == [1]
 | 
						|
      assert dllist.from_list_cyclic([1, 2, 3, 4]) |> dllist.to_list
 | 
						|
        == [4, 1, 2, 3]
 | 
						|
    }),
 | 
						|
  ])
 | 
						|
}
 |