Source code for kyu_8.logical_calculator.test_logical_calculator

#  Created by Egor Kostan.
#  GitHub: https://github.com/ikostan
#  LinkedIn: https://www.linkedin.com/in/egor-kostan/

# FUNDAMENTALS ARRAYS

import unittest
import allure
from utils.log_func import print_log
from kyu_8.logical_calculator.logical_calculator import logical_calc


[docs]@allure.epic('8 kyu') @allure.parent_suite('Beginner') @allure.suite("Data Structures") @allure.sub_suite("Unit Tests") @allure.feature("Lists") @allure.story('Logical Calculator') @allure.tag('FUNDAMENTALS', 'ARRAYS') @allure.link(url='https://www.codewars.com/kata/57096af70dad013aa200007b/train/python', name='Source/Kata') class LogicalCalculatorTestCase(unittest.TestCase): """ Testing logical_calc function """
[docs] def test_logical_calc_and(self): """ And (∧) is the truth-functional operator of logical conjunction The and of a set of operands is true if and only if all of its operands are true. Source: https://en.wikipedia.org/wiki/Logical_conjunction :return: """ allure.dynamic.title("AND logical operator") 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></p>") with allure.step("Pass an array with 2 members (negative)"): lst = [True, False] operator = 'AND' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step("Pass an array with 3 members (negative)"): lst = [True, True, False] operator = 'AND' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step("Pass an array with 3 members (negative)"): lst = [False, False, False] operator = 'AND' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step("Pass an array with 3 members (positive)"): lst = [True, True, True] operator = 'AND' expected = True print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step("Pass large array (negative)"): lst = [False, False, False, False, True, True, False, True, True, False, False, True, True, False, False, False, False, True, True, False, True, False, False, True, True, True, False, True, True, False, False, False, False, False, False, True, True, True, True, False, True, True, False, True, True, False, False, True, False, False] operator = 'AND' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected)
[docs] def test_logical_calc_or(self): """ In logic and mathematics, or is the truth-functional operator of (inclusive) disjunction, also known as alternation. The or of a set of operands is true if and only if one or more of its operands is true. Source: https://en.wikipedia.org/wiki/Logical_disjunction :return: """ allure.dynamic.title("OR logical operator") 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></p>") with allure.step('Pass an array with 2 members (positive)'): lst = [True, False] operator = 'OR' expected = True print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step('Pass an array with 3 members (positive)'): lst = [True, True, False] operator = 'OR' expected = True print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step('Pass an array with 3 members (negative)'): lst = [False, False, False] operator = 'OR' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step('Pass large array (positive)'): lst = [False, True, True, False, False, False, True, False, False, False, False, True, True, False, False, False, True, False, False, True, True, True, True, True, False, True, True, True, False, True, False, False, True, True, True, True, True, True, False, True, False, True, False, True, False, True, False, True, True, True] operator = 'OR' expected = True print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected)
[docs] def test_logical_calc_xor(self): """ Exclusive or or exclusive disjunction is a logical operation that outputs true only when inputs differ (one is true, the other is false). XOR outputs true whenever the inputs differ: Source: https://en.wikipedia.org/wiki/Exclusive_or :return: """ allure.dynamic.title("XOR logical operator") 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></p>") with allure.step('Pass an array with 2 members (positive)'): lst = [True, False] operator = 'OR' expected = True print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step('Pass an array with 3 members (negative)'): lst = [True, True, False] operator = 'XOR' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(logical_calc(lst, operator), expected) with allure.step('Pass medium size array'): lst = [False, False, True, True, False, False, False, False, True] operator = 'XOR' expected = True print_log(list=lst, operator=operator, expected=expected) self.assertEqual(expected, logical_calc(lst, operator)) with allure.step('Pass large size array #1'): lst = [False, False, True, False, False, True, True, True, False, False, True, False, False, False, False, True, False, True, False, False, True, False, False, True, True, True, False, False, False, False, True, False, False, False, False, False, True, False, False, False, True, True, False, True, False, True, False, False, True, False] operator = 'XOR' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(expected, logical_calc(lst, operator)) with allure.step('Pass large size array #2'): lst = [True, True, False, False, False, True, True, False, False, True, False, False, True, False, False, True, True, True, True, True, True, False, False, False, False, True, True, False, False, True, True, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, True, False, True, True] operator = 'XOR' expected = False print_log(list=lst, operator=operator, expected=expected) self.assertEqual(expected, logical_calc(lst, operator))