def test_insertion(self): # type: () -> None """ Test the insert functions of class Well :return: Nothing :raises AssertionError: Raises AssertionError if a test fails """ wells = Well.load_all_from_db(self.session) marker_1 = WellMarker(301.43, StratigraphicObject.init_stratigraphy(self.session, "ku"), self.session, "Comment 1") marker_2 = WellMarker(351.65, StratigraphicObject.init_stratigraphy(self.session, "mo"), self.session) marker_3 = WellMarker(934.23, StratigraphicObject.init_stratigraphy(self.session, "mm"), self.session, "Comment 3") wells[0].insert_marker(marker_1) self.assertEqual(len(wells[0].marker), 6) self.assertEqual(wells[0].marker[5], marker_1) self.assertRaises(ValueError, wells[1].insert_marker, marker_3) wells[2].insert_multiple_marker([marker_1, marker_2]) self.assertEqual(len(wells[2].marker), 6) self.assertEqual(wells[2].marker[2], marker_1) self.assertEqual(wells[2].marker[4], marker_2) del wells wells = Well.load_all_from_db(self.session) self.assertEqual(wells[2].marker[2], marker_1) self.assertEqual(wells[2].marker[4], marker_2) del wells wells = Well.load_all_from_db(self.session) self.assertRaises(ValueError, wells[1].insert_multiple_marker, [marker_1, marker_2, marker_3])
def test_loading(self): # type: () -> None """ Test the different types of loading of lines from the db. Part 1: load all wells from the database Part 2: load well by name Part 3: load wells in given extent Part 4: load wells with minimal depth :return: Nothing :raises AssertionError: Raises AssertionError if a test fails """ # Part 1: load all wells from the database wells = Well.load_all_from_db(self.session) self.assertEqual(len(wells), 3) self.assertEqual(wells[0].well_name, "Well_1") self.assertEqual(wells[1].well_name, "Well_2") self.assertEqual(wells[2].well_name, "Well_3") self.assertEqual(len(wells[1].marker), 4) self.assertTrue(wells[1].marker[0].horizon == wells[1].marker[3].horizon) del wells # Part 2: load well by name well = Well.load_by_wellname_from_db("Well_2", self.session) self.assertEqual(well.well_name, "Well_2") self.assertEqual(well.short_name, "W2") self.assertEqual(well.depth, 341) self.assertEqual(len(well.marker), 4) self.assertEqual(well.marker[1].horizon.statigraphic_name, "mm") self.assertEqual(well.marker[1].depth, 120) del well # Part 3: load wells in given extent # extent x: 500 - 1,300 # extent y: 0 - 2,400 # result: "Well_1" and "Well_2" wells = Well.load_in_extent_from_db(self.session, 500, 1300, 0, 2400) self.assertEqual(len(wells), 2) self.assertEqual(wells[0].well_name, "Well_1") self.assertEqual(wells[1].well_name, "Well_2") self.assertEqual(len(wells[0].marker), 5) self.assertEqual(len(wells[1].marker), 4) del wells # Part 4: load wells with minimal depth wells = Well.load_deeper_than_value_from_db(self.session, 395.23) self.assertEqual(len(wells), 2) self.assertEqual(wells[0].well_name, "Well_1") self.assertEqual(wells[1].well_name, "Well_3") self.assertTrue(wells[0].depth >= 395.23) self.assertTrue(wells[1].depth >= 395.23) del wells
def test_setter_and_getter(self): # type: () -> None """ Test setter and getter functionality :return: Nothing :raises AssertionError: Raises Assertion Error if a test fails """ # first part: test setter wells = Well.load_all_from_db(self.session) test_string = "abcdefghijklmnopqrstuvwxyz1234567890" wells[0].comment = "new comment set" wells[1].comment = 4 * test_string wells[0].easting = "-344.3" wells[1].easting = -1234.34 # self.assertRaises(ValueError, setattr, wells[2], "easting", "test") # python >= 2.7 => not included in all ArcGIS versions... with(self.assertRaises(ValueError)): # python <= 2.6 wells[2].easting = "test" wells[0].northing = -234.56 wells[1].northing = "-2345.356" with(self.assertRaises(ValueError)): wells[2].northing = "test" wells[0].altitude = -343.67 wells[1].altitude = "-235.34" with(self.assertRaises(ValueError)): wells[2].altitude = "test" wells[0].depth = 235.65 wells[1].depth = "3456.14" with(self.assertRaises(ValueError)): wells[2].depth = "test" with(self.assertRaises(ValueError)): wells[2].depth = -123.43 with(self.assertRaises(WellMarkerDepthException)): wells[2].depth = 500 wells[0].well_name = "new Well Name" wells[1].well_name = 4 * test_string wells[0].short_name = "NWN" wells[1].short_name = test_string # changes are stored automatically to the database through SQLAlchemy del wells # second part: test getters wells = Well.load_all_from_db(self.session) self.assertEqual(wells[0].comment, "new comment set") self.assertEqual(len(wells[1].comment), 100) self.assertEqual(wells[0].easting, -344.3) self.assertEqual(wells[1].easting, -1234.34) self.assertEqual(wells[2].easting, 3454.34) self.assertEqual(wells[0].northing, -234.56) self.assertEqual(wells[1].northing, -2345.356) self.assertEqual(wells[2].northing, 2340.22) self.assertEqual(wells[0].altitude, -343.67) self.assertEqual(wells[1].altitude, -235.34) self.assertEqual(wells[2].altitude, 342.2) self.assertEqual(wells[0].depth, 235.65) self.assertEqual(wells[1].depth, 3456.14) self.assertEqual(wells[2].depth, 645.21) self.assertEqual(wells[0].well_name, "new Well Name") self.assertEqual(len(wells[1].well_name), 100) self.assertEqual(wells[0].short_name, "NWN") self.assertEqual(len(wells[1].short_name), 20) # setter and getter for session wells[2].session = wells[1].session