def test_is_empty(self):
        fifo = FIFOQueue()
        self.assertTrue(fifo.is_empty(), "New queue should be empty")

        fifo.add(1)
        self.assertFalse(fifo.is_empty(), "Queue with added element shouldn't be empty")

        fifo.pop()
        self.assertTrue(fifo.is_empty(), "When all elements removed from a queue it should be empty")
    def test_pop_add(self):
        fifo = FIFOQueue()

        fifo.add(1)
        fifo.add(2)
        fifo.add(3)

        self.assertEqual(3, fifo.length())
        self.assertEqual(1, fifo.pop())
        self.assertEqual(2, fifo.pop())
        self.assertEqual(3, fifo.pop())
    def test_pop_add(self):
        fifo = FIFOQueue()

        fifo.add(1)
        fifo.add(2)
        fifo.add(3)

        self.assertEqual(3, fifo.length())
        self.assertEqual(1, fifo.pop())
        self.assertEqual(2, fifo.pop())
        self.assertEqual(3, fifo.pop())
    def test_is_empty(self):
        fifo = FIFOQueue()
        self.assertTrue(fifo.is_empty(), "New queue should be empty")

        fifo.add(1)
        self.assertFalse(fifo.is_empty(),
                         "Queue with added element shouldn't be empty")

        fifo.pop()
        self.assertTrue(
            fifo.is_empty(),
            "When all elements removed from a queue it should be empty")
    def test_remove(self):
        fifo = FIFOQueue()

        fifo.add(1)
        fifo.add(2)
        fifo.add(3)

        self.assertFalse(fifo.remove(5))
        self.assertTrue(fifo.remove(2))

        self.assertEqual(2, fifo.length())
        self.assertEqual(1, fifo.pop())
        self.assertEqual(3, fifo.pop())
    def test_remove(self):
        fifo = FIFOQueue()

        fifo.add(1)
        fifo.add(2)
        fifo.add(3)

        self.assertFalse(fifo.remove(5))
        self.assertTrue(fifo.remove(2))

        self.assertEqual(2, fifo.length())
        self.assertEqual(1, fifo.pop())
        self.assertEqual(3, fifo.pop())