コード例 #1
0
def test_projection_attribute():
    """
    Test Unknown attribute Raise
    """
    try:
        projection(EMPLOYEES, ["hello"])
    except UnknownAttributeException:
        assert True
コード例 #2
0
def test_projection_no_attributes():
    """
    Test projection operation with no attributes getting projected.
    """
    assert projection(EMPLOYEES, []) is None

    empty_table = [["Surname", "FirstName", "Age", "Salary"]]
    assert projection(empty_table, []) is None
コード例 #3
0
def test_cross_product_error():
    """
    Test if there is no attribute matched found
    """
    try:
        projection(R1, EMPTY)
    except UnknownAttributeException:
        assert True
コード例 #4
0
def test_projection_error():
    """
    Test if there is no attribute matched found
    """
    try:
        projection(EMPLOYEES, ["No_Name"])
    except UnknownAttributeException:
        assert True
コード例 #5
0
def test_projection_error():
    """
    Test if there is no attribute matched found
    """
    try:
        projection(EMPLOYEES, ["No_Name"])
    except UnknownAttributeException:
        assert True
コード例 #6
0
def test_cross_product_error():
    """
    Test if there is no attribute matched found
    """
    try:
        projection(R1, EMPTY)
    except UnknownAttributeException:
        assert True
コード例 #7
0
def test_projection_no_attributes():
    """
    Test projection operation with no attributes getting projected.
    """
    assert projection(EMPLOYEES, []) is None

    empty_table = [["Surname", "FirstName", "Age", "Salary"]]
    assert projection(empty_table, []) is None
コード例 #8
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"], ["Smith", "Mary"], ["Black", "Lucy"], ["Verdi", "Nico"], ["Smith", "Mark"]]
    result_2 = [["Age", "Salary"], [25, 2000], [40, 3000], [36, 4500], [40, 3900]]
    result_3 = [["Surname"], ["Smith"], ["Black"], ["Verdi"], ["Smith"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
    assert is_equal(result_2, projection(EMPLOYEES, ["Age", "Salary"]))
    assert is_equal(result_3, projection(EMPLOYEES, ["Surname"]))
    try:
        projection(EMPLOYEES, ["inf"])
    except ValueError:
        assert True

    try:
        projection(R3, ["inf"])
    except ValueError:
        assert True

    try:
        projection(R3, [""])
    except ValueError:
        assert True
コード例 #9
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"], ["Smith", "Mary"], ["Black", "Lucy"],
              ["Verdi", "Nico"], ["Smith", "Mark"]]
    result_2 = [["Age", "Salary"], [25, 2000], [40, 3000], [36, 4500],
                [40, 3900]]
    result_3 = [["Surname"], ["Smith"], ["Black"], ["Verdi"], ["Smith"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
    assert is_equal(result_2, projection(EMPLOYEES, ["Age", "Salary"]))
    assert is_equal(result_3, projection(EMPLOYEES, ["Surname"]))
    try:
        projection(EMPLOYEES, ["inf"])
    except ValueError:
        assert True

    try:
        projection(R3, ["inf"])
    except ValueError:
        assert True

    try:
        projection(R3, [""])
    except ValueError:
        assert True
コード例 #10
0
def test_projection_all_attributes():
    """
    Test projection operation with all attributes projected.
    """
    result = [["Surname", "FirstName", "Age", "Salary"],
              ["Smith", "Mary", 25, 2000], ["Black", "Lucy", 40, 3000],
              ["Verdi", "Nico", 36, 4500], ["Smith", "Mark", 40, 3900]]
    attribute_list = ["Surname", "FirstName", "Age", "Salary"]
    empty_table = [attribute_list]
    assert is_equal(result, projection(EMPLOYEES, attribute_list))
    assert projection(empty_table, attribute_list) is None
コード例 #11
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"], ["Smith", "Mary"], ["Black", "Lucy"],
              ["Verdi", "Nico"], ["Smith", "Mark"]]
    result_2 = [["Surname"], ["Smith"], ["Black"], ["Verdi"], ["Smith"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
    assert is_equal(result_2, projection(EMPLOYEES, ["Surname"]))
    assert projection(R3, []) is None
コード例 #12
0
def test_projection_all_attributes():
    """
    Test projection operation with all attributes projected.
    """
    result = [["Surname", "FirstName", "Age", "Salary"],
              ["Smith", "Mary", 25, 2000],
              ["Black", "Lucy", 40, 3000],
              ["Verdi", "Nico", 36, 4500],
              ["Smith", "Mark", 40, 3900]]
    attribute_list = ["Surname", "FirstName", "Age", "Salary"]
    empty_table = [attribute_list]
    assert is_equal(result, projection(EMPLOYEES, attribute_list))
    assert projection(empty_table, attribute_list) is None
コード例 #13
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"],
              ["Smith", "Mary"],
              ["Black", "Lucy"],
              ["Verdi", "Nico"],
              ["Smith", "Mark"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
    assert projection(R3, R6) is None
コード例 #14
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"],
              ["Smith", "Mary"],
              ["Black", "Lucy"],
              ["Verdi", "Nico"],
              ["Smith", "Mark"]]
    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))

    result = [["A", "C"], [1, 3], [4, 6]]
    assert is_equal(result, projection(R, ["A", "C"]))

    # If attributes passed in is empty, return empty table
    assert is_equal([], projection(EMPLOYEES, []))

    # Empty table as input should return empty table
    assert is_equal([], projection([], ["Surname", "FirstName"]))

    with pytest.raises(UnknownAttributeException):
        projection(EMPLOYEES, ["InvalidColumn"])

        # Mix of valid and invalid columns should still raise exception
        projection(EMPLOYEES, ["Surname", "InvalidColumn"])
コード例 #15
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"], ["Smith", "Mary"], ["Black", "Lucy"], ["Verdi", "Nico"], ["Smith", "Mark"]]

    result1 = [["Surname"], ["Smith"], ["Black"], ["Verdi"], ["Smith"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
    assert is_equal(result1, projection(EMPLOYEES, ["Surname"]))

    with pytest.raises(AssertionError):
        assert projection(EMPLOYEES, ["Surname", "MiddleName", "FirstName"])
コード例 #16
0
def test_projection_error():
    """
    Checks to make sure that the UnknownAttributeException is
    raised when the indicated attribute is not found within the table
    and when attribute is left blank
    :return:
    """
    try:
        projection(EMPLOYEES, [""])
    except UnknownAttributeException:
        assert True

    try:
        projection(EMPLOYEES, ["Department"])
    except UnknownAttributeException:
        assert True
コード例 #17
0
def test_projection_attribute_not_found():
    """
    Test projection operation if attribute not found.
    """
    # All mismatch
    try:
        projection(EMPLOYEES, ["LastName", "GivenName"])
        assert False
    except UnknownAttributeException:
        assert True
    # Partial mismatch
    try:
        projection(EMPLOYEES, ["Date of Birth", "Income"])
        assert False
    except UnknownAttributeException:
        assert True
コード例 #18
0
def test_projection_attribute_not_found():
    """
    Test projection operation if attribute not found.
    """
    # All mismatch
    try:
        projection(EMPLOYEES, ["LastName", "GivenName"])
        assert False
    except UnknownAttributeException:
        assert True
    # Partial mismatch
    try:
        projection(EMPLOYEES, ["Date of Birth", "Income"])
        assert False
    except UnknownAttributeException:
        assert True
コード例 #19
0
def test_projection_empty_input_table():
    """
    Test select operation where input table is an empty table.
    """
    empty_table = [["Surname", "FirstName", "Age", "Salary"]]

    assert projection(empty_table, ["Surname", "FirstName", "Surname", "FirstName"]) is None
コード例 #20
0
def test_projection_some_attributes():
    """
    Test projection operation such that some but not all attributes get projected.
    """
    result = [["Surname", "FirstName"], ["Smith", "Mary"], ["Black", "Lucy"],
              ["Verdi", "Nico"], ["Smith", "Mark"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
コード例 #21
0
def test_projection2():
    result = [["Age"],
              [25],
              [40],
              [36],
              [40]]

    assert is_equal(result, projection(EMPLOYEES, ["Age"]))
コード例 #22
0
def test_projection_empty_input_table():
    """
    Test select operation where input table is an empty table.
    """
    empty_table = [["Surname", "FirstName", "Age", "Salary"]]

    assert projection(empty_table,
                      ["Surname", "FirstName", "Surname", "FirstName"]) is None
コード例 #23
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"], ["Xio", "Anna"], ["Black", "Lucy"],
              ["Sara", "Maria"], ["Smith", "Mark"]]

    assert is_equal(result, projection(STUDENTS, ["Surname", "FirstName"]))
コード例 #24
0
def test_projection_student():
    # Test projection
    result = [["Surname", "Age"],
              ["Yang", 25],
              ["Jia", 23],
              ["Wang", 25],
              ["Fu", 31],
              ["Whiten", 66]]

    assert is_equal(result, projection(STUDENTS, ["Surname", "Age"]))
コード例 #25
0
def test_projection_multiple_same_attribute():
    """
    Test projection operation where attribute list has duplicates. Should only show the attribute once.
    """
    result = [["Surname", "FirstName"],
              ["Smith", "Mary"],
              ["Black", "Lucy"],
              ["Verdi", "Nico"],
              ["Smith", "Mark"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName", "Surname", "FirstName"]))
コード例 #26
0
def test_projection_team_test():
    # Tests projection operation
    result = [["Surname", "Age"],
          ["Smith", 17],
          ["Vasquez", 23],
          ["Allen", 18],
          ["Allen", 16],
          ["Xun", 47],
          ["Qian", 117]]

    assert is_equal(result, projection(VOTERS, ["Surname", "Age"]))
コード例 #27
0
def test_projection_multiple_same_attribute():
    """
    Test projection operation where attribute list has duplicates. Should only show the attribute once.
    """
    result = [["Surname", "FirstName"], ["Smith", "Mary"], ["Black", "Lucy"],
              ["Verdi", "Nico"], ["Smith", "Mark"]]

    assert is_equal(
        result,
        projection(EMPLOYEES,
                   ["Surname", "FirstName", "Surname", "FirstName"]))
コード例 #28
0
def test_projection_some_attributes():
    """
    Test projection operation such that some but not all attributes get projected.
    """
    result = [["Surname", "FirstName"],
              ["Smith", "Mary"],
              ["Black", "Lucy"],
              ["Verdi", "Nico"],
              ["Smith", "Mark"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
コード例 #29
0
def test_projection_different_order():
    """
    Test projection for single attribute projection
    :return: list of column named in attribute
    """
    result = [["FirstName"],
              ["Mary"],
              ["Lucy"],
              ["Nico"],
              ["Mark"]]

    assert is_equal(result, projection(EMPLOYEES, ["FirstName"]))
コード例 #30
0
def test_projection_our_test():
    """
    Test cross product operation
    :return: list of cross product rows
    """
    result = [["Surname", "Title"],
              ["Mustard", "Colonel"],
              ["Scarlet", "Ms."],
              ["Green", "Mr."],
              ["White", "Mrs."],
              ["Plum", "Professor"]]

    assert is_equal(result, projection(SUSPECTS, ["Surname", "Title"]))
コード例 #31
0
def test_projection():
    """
    Test projection operation for multiple attribute
    return: list of columns named in attributes
    """

    result = [["Surname", "FirstName"],
              ["Smith", "Mary"],
              ["Black", "Lucy"],
              ["Verdi", "Nico"],
              ["Smith", "Mark"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))
コード例 #32
0
def test_projection_wrong_attributes():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"],
              ["Smith", "Mary"],
              ["Black", "Lucy"],
              ["Verdi", "Nico"],
              ["Smith", "Mark"]]
    try:
        assert is_equal(result, projection(EMPLOYEES, ["fat guy"]))
    except UnknownAttributeException:
        return True
コード例 #33
0
def test_projection():
    """
    Test projection operation.
    """

    result = [["Surname", "FirstName"],
              ["Smith", "Mary"],
              ["Black", "Lucy"],
              ["Verdi", "Nico"],
              ["Smith", "Mark"]]

    assert is_equal(result, projection(EMPLOYEES, ["Surname", "FirstName"]))

    result2 = [["Surname", "Age", "Salary"],
             ["Smith", 25, 2000],
             ["Black", 40, 3000],
             ["Verdi", 36, 4500],
             ["Smith", 40, 3900]]
    assert is_equal(result2, projection(EMPLOYEES, ["Surname", "Age", "Salary"]))

    result3 = [["Head"],
             ["Mori"],
             ["Brown"]]
    assert is_equal(result3, projection(R2, ["Head"]))
コード例 #34
0
def test_projection1():
    """
    Test projection operation (student version)
    """
    result1 = [['Make', 'Year'],
              ['Toyota', 1989],
              ['Honda', 2011],
              ['Dodge', 2000],
              ['Fiat', 1999]]

    result2 = [["Size", "Preferred Salinity"],
                ["Small", "Fresh"],
                ["Medium", "Salt"],
                ["Large", "Salt"]]

    result3 = [["Preferred Salinity"],
                ["Fresh"],
                ["Salt"],
                ["Salt"]]

    result4 = [["Type", "Size", "Preferred Salinity"],
             ["Trout", "Small", "Fresh"],
             ["Dogfish", "Medium", "Salt"],
             ["Great White", "Large", "Salt"]]

    # Test with regular table and 2 attributes.
    assert is_equal(result1, projection(CARS,["Make", "Year"]))

    # Test with another regular table and 2 attributes
    assert is_equal(result2, projection(FISH, ["Size", "Preferred Salinity"]))

    # Test with regular table and only 1 attribute
    assert is_equal(result3, projection(FISH, ["Preferred Salinity"]))

    # Test with regular table and all included attributes
    assert is_equal(result4, projection(FISH, ["Type", "Size", "Preferred Salinity"]))

    # Test with regular table and attributes provided out of order
    assert is_equal(result4, projection(FISH, ["Size", "Preferred Salinity", "Type"]))

    # Test with attributes not included in table
    try:
       projection(FISH, ["Colour"])
    except UnknownAttributeException:
        assert True
コード例 #35
0
def test_projection_returns_error():
     #Tests whether projection() function raises AttributeError if column is in attributes list but not table1
    try:
        projection(VOTERS, ["Age", "Riding"])
    except AttributeError:
        assert True
コード例 #36
0
def test_projection_returns_error():
    # Checks if projection() function raises an "AttributeError" if column is in the attributes list but not in table1.
    try:
        projection(BASEBALL_PLAYERS, ["Shirt Number", "name"])
    except AttributeError:
        assert True
コード例 #37
0
def test_projection_returns_error():
    # Test if projection has error
    try:
        projection(STUDENTS, ["Age", "Surname"])
    except AttributeError:
        assert True
コード例 #38
0
def projection_error():
    """
    Tests attributes not found on list.
    """
    assert projection(EMPLOYEES,["Hello"]) == False