EzSequencePy/tests/test_ezsequence.py
2025-02-02 21:03:12 -07:00

135 lines
3.7 KiB
Python

import unittest
from ezsequence import *
class TestAll(unittest.TestCase):
def number_names(self):
return \
{
1: "One",
2: "Two",
3: "Three",
4: "Four",
5: "Five"
}
def setUp(self):
pass
def test_contains_test(self):
full_list = [1, 2, 3]
sub_list = [1, 2]
list_intersection = list(set(full_list) & set(sub_list))
self.assertListEqual(sub_list, list_intersection)
def test_from_to(self):
expected = [1, 2, 3, 4, 5]
actual = list(sequence_from(1).to(5))
self.assertListEqual(expected, actual)
def test_until(self):
expected = [1, 2, 3, 4, 5]
sequence = \
sequence_from(1) \
.until(lambda index, value: value == 5)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_as_long_as(self):
expected = [1, 2, 3, 4, 5]
sequence = \
sequence_from(1) \
.as_long_as(lambda index, value: value < 6)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_when(self):
expected = [1, 3, 5, 7, 9]
sequence = \
sequence_from(1) \
.when(lambda index, value: value % 2 == 1) \
.as_long_as(lambda index, value: value <= 10)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_with_increment(self):
expected = [1, 3, 5, 7, 9]
sequence = \
sequence_from(1) \
.with_increment(lambda index, value: value + 2) \
.as_long_as(lambda index, value: value <= 10)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_with_increment_backward(self):
expected = [1, -1, -3, -5, -7, -9]
sequence = \
sequence_from(1) \
.with_increment(lambda index, value: value - 2) \
.as_long_as(lambda index, value: value >= -10)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_multiple_when(self):
expected = [5, 7, 9]
sequence = \
sequence_from(1) \
.when(lambda index, value: value % 2 == 1) \
.when(lambda index, value: value >= 5) \
.as_long_as(lambda index, value: value <= 10)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_not_when(self):
expected = [1, 3, 5, 7, 9]
sequence = \
sequence_from(1) \
.not_when(lambda index, value: value % 2 == 0) \
.as_long_as(lambda index, value: value <= 10)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_multiple_not_when(self):
expected = [5, 7, 9]
sequence = \
sequence_from(1) \
.not_when(lambda index, value: value % 2 == 0) \
.not_when(lambda index, value: value < 5) \
.as_long_as(lambda index, value: value <= 10)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_mixed_when_and_not_when(self):
expected = [3, 9]
sequence = \
sequence_from(1) \
.when(lambda index, value: value % 2 == 1) \
.when(lambda index, value: value > 1) \
.not_when(lambda index, value: value == 7) \
.not_when(lambda index, value: value == 5) \
.as_long_as(lambda index, value: value <= 10)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_translate_on_one_item(self):
expected = [4]
sequence = sequence_from(1).to(1) \
.translate_as(lambda index, value: value * 3 + 1)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_translate_on_multiple_items(self):
expected = [4, 7, 10, 13, 16]
sequence = sequence_from(1).to(5) \
.translate_as(lambda index, value: value * 3 + 1)
actual = list(sequence)
self.assertListEqual(expected, actual)
def test_translate_on_disparate_types(self):
expected = ["ONE", "TWO", "THREE", "FOUR", "FIVE"]
sequence = sequence_from(1).to(5) \
.translate_as(lambda index, value: self.number_names()[value].upper())
actual = list(sequence)
self.assertListEqual(expected, actual)
# if __name__ == "__main__":
# unittest.main()