コード例 #1
0
 def _station(self, rep, id, lat, lon, ident):
     return dballe.Station(rep, lat, lon, ident)
コード例 #2
0
    def testQueryDataCursorAccess(self):
        def assertResultIntEqual(result, name, value):
            self.assertEqual(result[name], value)
            self.assertEqual(result.enqi(name), value)
            self.assertEqual(result.enqs(name), str(value))
            self.assertEqual(result.enqd(name), float(value))
            self.assertEqual(result.enqf(name), str(value))

        def assertResultStringEqual(result, name, value):
            self.assertEqual(result[name], value)
            self.assertRaises(RuntimeError, result.enqi, name)
            self.assertRaises(RuntimeError, result.enqd, name)
            self.assertEqual(result.enqs(name), value)
            self.assertEqual(result.enqf(name), value)

        with self.deprecated_on_db():
            with self.db.query_data({
                    "latmin": 10.0,
                    "var": "B01011",
                    "query": "attrs"
            }) as cur:
                self.assertEqual(cur.remaining, 1)
                for result in cur:
                    self.assertEqual(cur.remaining, 0)

                    assertResultIntEqual(result, "priority", 101)

                    assertResultStringEqual(result, "rep_memo", "synop")
                    assertResultStringEqual(result, "report", "synop")

                    # self.assertEqual(result.enqs("ana_id"), ?)

                    self.assertIsNone(result["ident"])
                    self.assertRaises(RuntimeError, result.enqi, "ident")
                    self.assertRaises(RuntimeError, result.enqd, "ident")
                    self.assertIsNone(result.enqs("ident"))
                    self.assertIsNone(result.enqf("ident"))

                    self.assertIs(result["mobile"], False)
                    self.assertEqual(result.enqi("mobile"), 0)
                    self.assertEqual(result.enqd("mobile"), 0)
                    self.assertEqual(result.enqs("mobile"), "0")
                    self.assertEqual(result.enqf("mobile"), "0")

                    self.assertEqual(result["lat"], Decimal("12.34560"))
                    self.assertEqual(result.enqi("lat"), 1234560)
                    self.assertEqual(result.enqd("lat"), 12.34560)
                    self.assertEqual(result.enqs("lat"), "1234560")
                    self.assertEqual(result.enqf("lat"), "12.34560")

                    self.assertEqual(result["lon"], Decimal("76.54320"))
                    self.assertEqual(result.enqi("lon"), 7654320)
                    self.assertEqual(result.enqd("lon"), 76.54320)
                    self.assertEqual(result.enqs("lon"), "7654320")
                    self.assertEqual(result.enqf("lon"), "76.54320")

                    self.assertEqual(
                        result["coords"],
                        (Decimal("12.34560"), Decimal("76.54320")))
                    self.assertRaises(RuntimeError, result.enqi, "coords")
                    self.assertRaises(RuntimeError, result.enqd, "coords")
                    self.assertRaises(RuntimeError, result.enqs, "coords")
                    self.assertRaises(RuntimeError, result.enqf, "coords")

                    self.assertEqual(
                        result["station"],
                        dballe.Station("synop", 12.345600, 76.543200, None))
                    self.assertRaises(RuntimeError, result.enqi, "station")
                    self.assertRaises(RuntimeError, result.enqd, "station")
                    self.assertRaises(RuntimeError, result.enqs, "station")
                    self.assertRaises(RuntimeError, result.enqf, "station")

                    self.assertEqual(result["datetime"],
                                     datetime.datetime(1945, 4, 25, 8, 0))
                    self.assertRaises(RuntimeError, result.enqi, "datetime")
                    self.assertRaises(RuntimeError, result.enqd, "datetime")
                    self.assertRaises(RuntimeError, result.enqs, "datetime")
                    self.assertRaises(RuntimeError, result.enqf, "datetime")

                    assertResultIntEqual(result, "year", 1945)
                    assertResultIntEqual(result, "month", 4)
                    assertResultIntEqual(result, "day", 25)
                    assertResultIntEqual(result, "hour", 8)
                    assertResultIntEqual(result, "min", 0)
                    assertResultIntEqual(result, "sec", 0)

                    self.assertEqual(result["level"],
                                     dballe.Level(10, 11, 15, 22))
                    self.assertRaises(RuntimeError, result.enqi, "level")
                    self.assertRaises(RuntimeError, result.enqd, "level")
                    self.assertRaises(RuntimeError, result.enqs, "level")
                    self.assertRaises(RuntimeError, result.enqf, "level")

                    assertResultIntEqual(result, "leveltype1", 10)
                    assertResultIntEqual(result, "l1", 11)
                    assertResultIntEqual(result, "leveltype2", 15)
                    assertResultIntEqual(result, "l2", 22)

                    self.assertEqual(result["trange"],
                                     dballe.Trange(20, 111, 222))
                    self.assertRaises(RuntimeError, result.enqi, "trange")
                    self.assertRaises(RuntimeError, result.enqd, "trange")
                    self.assertRaises(RuntimeError, result.enqs, "trange")
                    self.assertRaises(RuntimeError, result.enqf, "trange")

                    assertResultIntEqual(result, "pindicator", 20)
                    assertResultIntEqual(result, "p1", 111)
                    assertResultIntEqual(result, "p2", 222)

                    assertResultStringEqual(result, "var", "B01011")

                    # Because we use query=attrs, result["variable"] includes attributes
                    expected = dballe.var('B01011', 'Hey Hey!!')
                    expected.seta(dballe.var('B33007', 50))
                    expected.seta(dballe.var('B33036', 75))
                    self.assertEqual(result["variable"], expected)
                    self.assertRaises(RuntimeError, result.enqi, "variable")
                    self.assertRaises(RuntimeError, result.enqd, "variable")
                    self.assertRaises(RuntimeError, result.enqs, "variable")
                    self.assertRaises(RuntimeError, result.enqf, "variable")

                    self.assertEqual(
                        result["attrs"],
                        [dballe.var('B33007', 50),
                         dballe.var('B33036', 75)])
                    self.assertRaises(RuntimeError, result.enqi, "attrs")
                    self.assertRaises(RuntimeError, result.enqd, "attrs")
                    self.assertRaises(RuntimeError, result.enqs, "attrs")
                    self.assertRaises(RuntimeError, result.enqf, "attrs")