135 lines
3.7 KiB
Python
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() |