require 'minitest/autorun' require_relative 'series' class SeriesTest < Minitest::Test def test_simple_slices_of_one series = Series.new('01234') assert_equal ['0', '1', '2', '3', '4'], series.slices(1) end def test_simple_slices_of_one_again series = Series.new('92834') assert_equal ['9', '2', '8', '3', '4'], series.slices(1) end def test_simple_slices_of_two series = Series.new('01234') assert_equal ['01', '12', '23', '34'], series.slices(2) end def test_other_slices_of_two series = Series.new('98273463') expected = ['98', '82', '27', '73', '34', '46', '63'] assert_equal expected, series.slices(2) end def test_simple_slices_of_two_again series = Series.new('37103') assert_equal ['37', '71', '10', '03'], series.slices(2) end def test_simple_slices_of_three series = Series.new('01234') assert_equal ['012', '123', '234'], series.slices(3) end def test_simple_slices_of_three_again series = Series.new('31001') assert_equal ['310', '100', '001'], series.slices(3) end def test_other_slices_of_three series = Series.new('982347') expected = ['982', '823', '234', '347'] assert_equal expected, series.slices(3) end def test_simple_slices_of_four series = Series.new('01234') assert_equal ['0123', '1234'], series.slices(4) end def test_simple_slices_of_four_again series = Series.new('91274') assert_equal ['9127', '1274'], series.slices(4) end def test_simple_slices_of_five series = Series.new('01234') assert_equal ['01234'], series.slices(5) end def test_simple_slices_of_five_again series = Series.new('81228') assert_equal ['81228'], series.slices(5) end def test_simple_slice_that_blows_up series = Series.new('01234') assert_raises ArgumentError do series.slices(6) end end def test_more_complicated_slice_that_blows_up slice_string = '01032987583' series = Series.new(slice_string) assert_raises ArgumentError do series.slices(slice_string.length + 1) end end def test_sequential_slices series = Series.new('1234') assert_equal ['12', '23', '34'], series.slices(2) assert_equal ['123', '234'], series.slices(3) end end