Exemple #1
0
    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])
Exemple #2
0
    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
Exemple #3
0
    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