예제 #1
0
def test_fruit_order_same():
    """
    Test fruit.

    :return:
    """
    for num in range(0, 5):
        assert fruit_order(num, num, num) == num
        assert fruit_order(num, 1 + num, num) == num
        assert fruit_order(num + 2, 1 + num, num) == num
        assert fruit_order(num + 1, num + 1, num) == num
예제 #2
0
def test_fruit_order_false():
    """
    Test fruit.

    :return:
    """
    assert fruit_order(1, 2, 3) == -1
    assert fruit_order(3, 1, 4) == -1
    assert fruit_order(6, 2, 26) == -1
    assert fruit_order(1, 100, 19) == -1
    assert fruit_order(3, 1, 10) == -1
예제 #3
0
def test_fruits_6():
    """Big numbers."""
    assert fruit_order(105, 105, 630) == 105
    assert fruit_order(0, 105, 600) == -1
    assert fruit_order(105, 0, 600) == -1
    assert fruit_order(105, 200, 700) == 0
    assert fruit_order(105, 105, 700) == -1
    assert fruit_order(120, 120, 400) == 0
    assert fruit_order(120, 120, 124) == 4
    assert fruit_order(1, 120, 302) == -1
예제 #4
0
def test_fruit_order_is_impossible():
    """Test when impossible to fulfill order in fruit_order."""
    for a in range(0, 21):
        for b in range(0, 21):
            for c in range(0, 51):
                small_baskets, big_baskets, ordered_amount = a, b, c
                while big_baskets > 0 and ordered_amount > 4:
                    big_baskets -= 1
                    ordered_amount -= 5
                while small_baskets > 0 and ordered_amount > 0:
                    small_baskets -= 1
                    ordered_amount -= 1
                if ordered_amount != 0:
                    assert solution.fruit_order(a, b, c) == -1
예제 #5
0
def test_fruit_order_middle():
    """
    Test fruit.

    :return:
    """
    for num in range(10000):
        if num % 5 == 0:
            assert fruit_order(0, num, num) == 0
            g = num // 5
            assert fruit_order(0, g, num) == 0
            assert fruit_order(0, g, num + 1) == -1
            assert fruit_order(0, g, num + 5) == -1
            assert fruit_order(0, g, num - 1) == -1
            assert fruit_order(num, g, num) == 0
        if num % 5 > 1:
            assert fruit_order(1, num, num) == -1  # Больше не надо
        if num // 5 > 1:
            k = num % 5
            assert fruit_order(num, num, num) == k
            assert fruit_order(k - 1, num, num) == -1
            v = num * 5 + num + 1
            assert fruit_order(num, num, v) == -1
예제 #6
0
def test_fruit_order_num_of_small_baskets():
    """Test how many small baskets it takes to fulfill order."""
    for a in range(0, 21):
        for b in range(0, 21):
            for c in range(0, 51):
                small_baskets, big_baskets, ordered_amount, result = a, b, c, 0
                while big_baskets > 0 and ordered_amount > 4:
                    big_baskets -= 1
                    ordered_amount -= 5
                while small_baskets > 0 and ordered_amount > 0:
                    small_baskets -= 1
                    ordered_amount -= 1
                    result += 1
                if ordered_amount == 0:
                    assert solution.fruit_order(a, b, c) == result
예제 #7
0
def test_fruit_order():
    """
    Test fruit.

    :return:
    """
    assert fruit_order(4, 1, 9) == 4
    assert fruit_order(6, 2, 5) == 0
    assert fruit_order(23, 2, 10) == 0
    assert fruit_order(23, 0, 10) == 10
    assert fruit_order(5, 1, 8) == 3
    assert fruit_order(5, 2, 5) == 0
예제 #8
0
def test_fruit_order_zero():
    """
    Test fruit.

    :return:
    """
    for num in range(10000):
        assert fruit_order(num, num, 0) == 0
        assert fruit_order(num, 0, num) == num
        assert fruit_order(0, num, 0) == 0
        assert fruit_order(num, 0, 0) == 0
        assert fruit_order(num, 0, num + 1) == -1
        assert fruit_order(num + 1, 0, num) == num
예제 #9
0
def test_fruit_order_last():
    """
    Test fruit.

    :return:
    """
    for num in range(10000):
        d = num // 5
        n = num % 5
        assert fruit_order(n, d, num + 1) == -1
        assert fruit_order(n - 1, d, num + 1) == -1
        assert fruit_order(n, d - 1, num + 1) == -1
        assert fruit_order(0, d, num + 1) == -1
        assert fruit_order(0, 0, num + 1) == -1
        if num != 0:
            assert fruit_order(0, 0, num) == -1
예제 #10
0
def test_fruit_order_first_1():
    """Test if there's 1 small basket, 0 big and 0 need."""
    assert solution.fruit_order(1, 0, 0) == 0
예제 #11
0
def test_fruit_order_last_1():
    """Test if there's no baskets but 1 need."""
    assert solution.fruit_order(0, 0, 1) == -1
예제 #12
0
def test_fruit_order_first_0():
    """Test if there's no small baskets, 1 big and 1 need."""
    assert solution.fruit_order(0, 1, 1) == -1
예제 #13
0
def test_fruit_order_order_all_0():
    """Test if there's 0 baskets and 0 need."""
    assert solution.fruit_order(0, 0, 0) == 0
예제 #14
0
def test_fruit_order_all_large_use_all():
    """Test if both small and big ones used."""
    assert solution.fruit_order(200, 200, 1200) == 200
예제 #15
0
def test_fruit_order_all_large_impossible():
    """Test if small and big baskets work but large."""
    assert solution.fruit_order(100, 100, 700) == -1
예제 #16
0
def test_fruit_order_all_large_incomplete():
    """Test if small and big baskets work but large."""
    assert solution.fruit_order(100, 100, 550) == 50
예제 #17
0
def test_fruit_order_large_baskets_only_large():
    """Test if big baskets work but large."""
    assert solution.fruit_order(300, 200, 1000) == 0
예제 #18
0
def test_fruit_order_large_first_complete():
    """Test if only small baskets work."""
    assert solution.fruit_order(100, 0, 100) == 100
예제 #19
0
def test_fruit_order_all_large_more_baskets():
    """Test if small and big baskets work but large."""
    assert solution.fruit_order(100, 300, 250) == 0
예제 #20
0
def test_fruit_order_large_first_impossible():
    """Test if only small baskets work."""
    assert solution.fruit_order(100, 0, 101) == -1
예제 #21
0
def test_fruit_order_all_large_enough_bigs_not_enough_smalls():
    """Test if all there is not enough small baskets."""
    assert solution.fruit_order(2, 600, 1158) == -1
예제 #22
0
def test_fruit_order_large_second():
    """Test if only big baskets work."""
    assert solution.fruit_order(0, 100, 495) == 0
예제 #23
0
def test_fruit_order_middle_0():
    """Test if there's 1 small basket, 0 big and 0 need."""
    assert solution.fruit_order(1, 0, 1) == 1
예제 #24
0
def test_fruit_order_large_second_complete():
    """Test if only big baskets work."""
    assert solution.fruit_order(0, 200, 1000) == 0
예제 #25
0
def test_fruit_order_last_0():
    """Test if there's 1 small and 1 big basket, but 0 need."""
    assert solution.fruit_order(1, 1, 0) == 0
예제 #26
0
def test_fruit_order_large_second_impossible():
    """Test if only big baskets work."""
    assert solution.fruit_order(0, 200, 1001) == -1
예제 #27
0
def test_fruit_order_middle_1():
    """Test if there's 1 big basket, 0 small and 0 need."""
    assert solution.fruit_order(0, 1, 0) == 0
예제 #28
0
def test_fruit_order_large_third():
    """Test if only big baskets work."""
    assert solution.fruit_order(0, 20, 500) == -1
예제 #29
0
def test_fruit_order_all_1():
    """Test if there's 1 small and 1 big basket, and 1 need."""
    assert solution.fruit_order(1, 1, 1) == 1
예제 #30
0
def test_fruit_order_large_third_possible():
    """Test if only big baskets work but large."""
    assert solution.fruit_order(0, 50, 250) == 0