Sha256: f8cb7d49f5eeaa0f4c694bcc9e5c51d42f977a0aa369e30b657b5b3a3bf4afd3
Contents?: true
Size: 1.92 KB
Versions: 2
Compression:
Stored size: 1.92 KB
Contents
require 'rspec' require_relative '../lib/totally_lazy' describe 'Sequence' do it 'should create empty sequence when iterable is nil' do expect(sequence(nil)).to eq(empty) end it 'should support transpose' do expect(sequence(sequence(1, 2), sequence(3, 4), sequence(5, 6))).to include(sequence(1, 3, 5), sequence(2, 4, 6)) end it 'should eagerly return the first element of a sequence, returns NoSuchElementException if empty' do expect(sequence(1, 2).head).to eq(1) expect { empty.head }.to raise_error(NoSuchElementException) end it 'should eagerly return the first element of a sequence wrapped in a some, returns none if empty' do expect(sequence(1, 2).head_option).to eq(some(1)) expect(empty.head_option).to eq(none) end it 'should eagerly return the last element of a finite sequence, throws NoSuchElementException if empty' do expect(sequence(1, 2).last).to eq(2) expect { empty.last }.to raise_error(NoSuchElementException) end it 'should eagerly return the last element of a finite sequence wrapped in a some, returns none if empty' do expect(sequence(1, 2).last_option).to eq(some(2)) expect(empty.last_option).to eq(none) end it 'should lazily return the elements except the last one - throws NoSuchElementException if empty. Works with infinite sequences' do expect(sequence(1, 2, 3).tail).to eq(sequence(2, 3)) expect { empty.tail.first }.to raise_error(NoSuchElementException) end it 'should lazily return the elements except the first one - throws NoSuchElementException if empty' do expect(sequence(1, 2, 3).init).to eq(sequence(1, 2)) expect { empty.init.first }.to raise_error(NoSuchElementException) end it 'should lazily shuffle the elements - throws NoSuchElementException if empty' do expect(sequence(1..50).shuffle.entries).not_to eq(sequence(1..50).entries) expect { empty.shuffle.first }.to raise_error(NoSuchElementException) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
totally_lazy-0.0.2 | spec/sequence_spec.rb |
totally_lazy-0.0.1 | spec/sequence_spec.rb |