Source code for kyu_6.default_list.test_default_list

"""
Test for -> DefaultList.

Created by Egor Kostan.
GitHub: https://github.com/ikostan
"""

# FUNDAMENTALS CLASSES BASIC LANGUAGE FEATURES
# OBJECT-ORIENTED PROGRAMMING

import unittest
import allure
from utils.log_func import print_log
from kyu_6.default_list.default_list import DefaultList


[docs] @allure.epic('6 kyu') @allure.parent_suite('Novice') @allure.suite("Object-Oriented Programming") @allure.sub_suite("Unit Tests") @allure.feature("Classes") @allure.story('DefaultList') @allure.tag('FUNDAMENTALS', 'CLASSES', 'BASIC LANGUAGE FEATURES', 'OBJECT-ORIENTED PROGRAMMING') @allure.link( url='https://www.codewars.com/kata/5e882048999e6c0023412908', name='Source/Kata') class DefaultListTestCase(unittest.TestCase): """ Testing 'DefaultList' class. Your job is to create a class (or a function which returns an object) called DefaultList. The class will have two parameters to be given: a list, and a default value. The list will obviously be the list that corresponds to that object. The default value will be returned any time an index of the list is called in the code that would normally raise an error (i.e. i > len(list) - 1 or i < -len(list)). This class must also support the regular list functions extend, append, insert, remove, and pop. """
[docs] def test_default_list_basic(self): """ Testing 'DefaultList' class: __getitem__. Called to implement evaluation of self[key]. For sequence types, the accepted keys should be integers and slice objects. Note that the special interpretation of negative indexes (if the class wishes to emulate a sequence type) is up to the __getitem__() method. :return: """ # pylint: disable-msg=R0801 allure.dynamic.title( "Testing 'DefaultList' class: __getitem__") allure.dynamic.severity(allure.severity_level.NORMAL) allure.dynamic.description_html( '<h3>Codewars badge:</h3>' '<img src="https://www.codewars.com/users/myFirstCode' '/badges/large">' '<h3>Test Description:</h3>' "<p>Testing __getitem__ method.</p>") # pylint: enable-msg=R0801 with allure.step("Create a list"): lst = DefaultList([1, 3, 4, 7, 2, 34], 'def') with allure.step("Get list item by index and verify the results"): i: int = 1 expected = 3 actual = lst[i] print_log(lst=lst, i=i, expected=expected, actual=actual) self.assertEqual(expected, actual) with allure.step("Get list item by index and verify the results"): i = 333000 expected_str = 'def' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual) with allure.step("Get list item by index and verify the results"): i = 23 expected_str = 'def' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual)
[docs] def test_default_list_extend(self): """ Testing 'DefaultList' class: extend. :return: """ # pylint: disable-msg=R0801 allure.dynamic.title("Testing 'DefaultList' class: extend") allure.dynamic.severity(allure.severity_level.NORMAL) allure.dynamic.description_html( '<h3>Codewars badge:</h3>' '<img src="https://www.codewars.com/users/myFirstCode' '/badges/large">' '<h3>Test Description:</h3>' "<p>Testing extend method.</p>") # pylint: enable-msg=R0801 with allure.step("Create a list"): lst = DefaultList([1, 3, 4, 7, 2, 34], 'def') with allure.step("Extend the list list"): lst.extend([3, 23, 'hello', 'lists', 'word', 344]) with allure.step("Get list item by index and verify the results"): i = 9 expected_str = 'lists' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual) with allure.step("Get list item by index and verify the results"): i = 11 expected = 344 actual = lst[i] print_log(lst=lst, i=i, expected=expected, actual=actual) self.assertEqual(expected, actual) with allure.step("Get list item by index and verify the results"): i = 12 expected_str = 'def' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual)
[docs] def test_default_list_append(self): """ Testing 'DefaultList' class: append. :return: """ # pylint: disable-msg=R0801 allure.dynamic.title("Testing 'DefaultList' class: append") allure.dynamic.severity(allure.severity_level.NORMAL) allure.dynamic.description_html( '<h3>Codewars badge:</h3>' '<img src="https://www.codewars.com/users/myFirstCode' '/badges/large">' '<h3>Test Description:</h3>' "<p>Testing append method.</p>") # pylint: enable-msg=R0801 with allure.step("Create a list"): lst = DefaultList( [1, 3, 4, 7, 2, 34, 3, 23, 'hello', 'lists', 'word', 344], 'def') with allure.step("Append the list"): lst.append(233344455) with allure.step("Get list item by index and verify the results"): i = 12 expected = 233344455 actual = lst[i] print_log(lst=lst, i=i, expected=expected, actual=actual) self.assertEqual(expected, actual) with allure.step("Get list item by index and verify the results"): i = 100 expected_str = 'def' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual)
[docs] def test_default_list_remove(self): """ Testing 'DefaultList' class: remove. :return: """ # pylint: disable-msg=R0801 allure.dynamic.title("Testing 'DefaultList' class: remove") allure.dynamic.severity(allure.severity_level.NORMAL) allure.dynamic.description_html( '<h3>Codewars badge:</h3>' '<img src="https://www.codewars.com/users/myFirstCode' '/badges/large">' '<h3>Test Description:</h3>' "<p>Testing remove method.</p>") # pylint: enable-msg=R0801 with allure.step("Create a list"): lst = DefaultList( [1, 3, 4, 7, 2, 34, 3, 23, 'hello', 'lists', 'word', 344, 233344455], 'def') with allure.step("Remove items from the list"): lst.remove(2) lst.remove(1) lst.remove(3) with allure.step("Get list item by index and verify the results"): i = 1 expected = 7 actual = lst[i] print_log(lst=lst, i=i, expected=expected, actual=actual) self.assertEqual(expected, actual) with allure.step("Get list item by index and verify the results"): i = 9 expected = 233344455 actual = lst[i] print_log(lst=lst, i=i, expected=expected, actual=actual) self.assertEqual(expected, actual)
[docs] def test_default_list_insert(self): """ Testing 'DefaultList' class: insert. :return: """ # pylint: disable-msg=R0801 allure.dynamic.title("Testing 'DefaultList' class: insert") allure.dynamic.severity(allure.severity_level.NORMAL) allure.dynamic.description_html( '<h3>Codewars badge:</h3>' '<img src="https://www.codewars.com/users/myFirstCode' '/badges/large">' '<h3>Test Description:</h3>' "<p>Testing insert method.</p>") # pylint: enable-msg=R0801 with allure.step("Create a list"): lst = DefaultList( [4, 7, 34, 3, 23, 'hello', 'lists', 'word', 344, 233344455], 'def') with allure.step("Insert items to the list"): lst.insert(-3, 34.34) with allure.step("Get list item by index and verify the results"): i = 8 expected_str = 'word' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual) with allure.step("Get list item by index and verify the results"): i = 10 expected = 233344455 actual = lst[i] print_log(lst=lst, i=i, expected=expected, actual=actual) self.assertEqual(expected, actual)
[docs] def test_default_list_pop(self): """ Testing 'DefaultList' class: pop. :return: """ # pylint: disable-msg=R0801 allure.dynamic.title("Testing 'DefaultList' class: pop") allure.dynamic.severity(allure.severity_level.NORMAL) allure.dynamic.description_html( '<h3>Codewars badge:</h3>' '<img src="https://www.codewars.com/users/myFirstCode' '/badges/large">' '<h3>Test Description:</h3>' "<p>Testing pop method.</p>") # pylint: enable-msg=R0801 with allure.step("Create a list"): lst = DefaultList( [4, 7, 34, 3, 23, 'hello', 'lists', 'word', 344, 233344455], 'def') with allure.step("Pop an item and verify the result"): i = 5 expected_str = 'hello' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual) with allure.step("Pop an item and verify the result"): i = 6 expected_str = 'lists' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual) with allure.step("Pop an un-existing item and verify the result"): i = 45 expected_str = 'def' actual = lst[i] print_log(lst=lst, i=i, expected=expected_str, actual=actual) self.assertEqual(expected_str, actual) with allure.step("Pop first item and verify the result"): i = 0 expected = 4 actual = lst[i] print_log(lst=lst, i=i, expected=expected, actual=actual) self.assertEqual(expected, actual)