def test_pop_first(self): s = Deque(['A', 'B', 'C']) assert s.pop_first() == 'A' assert s.length() == 2 assert s.pop_first() == 'B' assert s.length() == 1 assert s.pop_first() == 'C' assert s.length() == 0 assert s.is_empty() is True with self.assertRaises(ValueError): s.pop_first()
def test_peek_last(self): s = Deque() assert s.peek_last() is None s.append('A') assert s.peek_last() == 'A' s.append('B') assert s.peek_last() == 'B' s.pop_last() assert s.peek_last() == 'A' s.pop_last() assert s.peek_last() is None
def test_length(self): s = Deque() assert s.length() == 0 s.append('A') assert s.length() == 1 s.append('B') assert s.length() == 2 s.pop_last() assert s.length() == 1 s.pop_last() assert s.length() == 0
def test_prepend(self): s = Deque() s.prepend('A') assert s.peek_first() == 'A' assert s.peek_first() == 'A' assert s.length() == 1 s.prepend('B') assert s.peek_first() == 'B' assert s.length() == 2 s.prepend('C') assert s.peek_first() == 'C' assert s.length() == 3 assert s.is_empty() is False
def palindrome_checker(input_string): # convert the string to lowercase input_string = input_string.lower() dq = Deque() match = True for ch in input_string: # skip empty spaces and insert to queue if ch != " ": dq.add_front(ch) while dq.size() > 1 and match: first = dq.remove_front() last = dq.remove_rear() if first != last: match = False return match
def test_init(self): s = Deque() assert s.peek_first() is None assert s.peek_last() is None assert s.length() == 0 assert s.is_empty() is True
def test_init_with_list(self): s = Deque(['A', 'B', 'C']) assert s.peek_last() == 'C' assert s.peek_first() == 'A' assert s.length() == 3 assert s.is_empty() is False