Exemplo n.º 1
0
 def test_iterable(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     results.add(result)
     for res in results:
         assert res == result
Exemplo n.º 2
0
    def _search(self, query):
        results = ResultList(result=self.result_type())
        for name, source in self.sources:
            if source.should_search(query, results):
                results.add(source.search(query))

        return self._best_result(results)
Exemplo n.º 3
0
 def test_iterable(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     results.add(result)
     for res in results:
         self.assertEqual(res, result)
Exemplo n.º 4
0
 def test_iterable(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     results.add(result)
     for res in results:
         self.assertEqual(res, result)
Exemplo n.º 5
0
 def test_iterable(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     results.add(result)
     for res in results:
         assert res == result
Exemplo n.º 6
0
    def search(self, query):
        results = ResultList(self.result_type())
        for should, search in (
                (self.should_search_wifi, self.search_wifi),
                (self.should_search_cell, self.search_cell)):

            if should(query, results):
                results.add(search(query))
                if results.satisfies(query):
                    # If we have a good enough result, stop.
                    break

        query.emit_source_stats(self.source, results.best())
        return results
Exemplo n.º 7
0
 def test_repr(self):
     results = ResultList([Position(lat=1.0), Position(lat=2.0)])
     rep = repr(results)
     self.assertTrue(rep.startswith('ResultList'), rep)
     self.assertTrue('Position<' in rep, rep)
     self.assertTrue('lat:1.0' in rep, rep)
     self.assertTrue('lat:2.0' in rep, rep)
Exemplo n.º 8
0
    def search_mcc(self, query):
        results = ResultList()

        codes = set()
        for cell in list(query.cell) + list(query.cell_area):
            codes.add(cell.mcc)

        regions = []
        for code in codes:
            regions.extend(GEOCODER.regions_for_mcc(code, metadata=True))

        for region in regions:
            region_code = region.code
            results.add(self.result_type(
                region_code=region_code,
                region_name=region.name,
                accuracy=region.radius))
        return results
Exemplo n.º 9
0
    def search_mcc(self, query):
        results = ResultList()

        codes = set()
        for cell in list(query.cell) + list(query.cell_area):
            codes.add(cell.mcc)

        regions = []
        for code in codes:
            regions.extend(GEOCODER.regions_for_mcc(code, metadata=True))

        for region in regions:
            region_code = region.code
            results.add(self.result_type(
                region_code=region_code,
                region_name=region.name,
                accuracy=region.radius))
        return results
Exemplo n.º 10
0
 def test_repr(self):
     results = ResultList([self._make_result(), self._make_result()])
     rep = repr(results)
     self.assertTrue(rep.startswith('ResultList:'), rep)
     self.assertTrue('Position<' in rep, rep)
     self.assertTrue('lat:1.0' in rep, rep)
     self.assertTrue('lon:1.0' in rep, rep)
     self.assertTrue('accuracy:10.0' in rep, rep)
     self.assertTrue('score:0.5' in rep, rep)
Exemplo n.º 11
0
 def test_repr(self):
     results = ResultList([self._make_result(), self._make_result()])
     rep = repr(results)
     assert rep.startswith('ResultList:')
     assert 'Position<' in rep
     assert 'lat:1.0' in rep
     assert 'lon:1.0' in rep
     assert 'accuracy:10.0' in rep
     assert 'score:0.5' in rep
Exemplo n.º 12
0
 def test_repr(self):
     results = ResultList([self._make_result(), self._make_result()])
     rep = repr(results)
     assert rep.startswith("ResultList:")
     assert "Position<" in rep
     assert "lat:1.0" in rep
     assert "lon:1.0" in rep
     assert "accuracy:10.0" in rep
     assert "score:0.5" in rep
Exemplo n.º 13
0
    def test_incomplete_keys(self):
        cells = CellAreaFactory.build_batch(4)
        cells[0].radio = None
        cells[1].mcc = None
        cells[2].mnc = None
        cells[3].lac = None

        with self.db_call_checker() as check_db_calls:
            query = self.model_query(cells=cells)
            result = self.source.result_type()
            self.assertFalse(
                self.source.should_search(query, ResultList(result)))
            check_db_calls(rw=0, ro=0)
Exemplo n.º 14
0
    def search(self, query):
        results = ResultList()
        for should, search in ((self.should_search_cell, self.search_mcc), ):

            if should(query, results):
                results.add(search(query))
                if results.satisfies(query):
                    # If we have a good enough result, stop.
                    break

        if len(results):
            query.emit_source_stats(self.source, results.best())
        else:
            results.add(self.result_type())
        return results
Exemplo n.º 15
0
    def search(self, query):
        results = ResultList()

        codes = set()
        for cell in list(query.cell) + list(query.cell_area):
            codes.add(cell.mcc)

        countries = []
        for code in codes:
            countries.extend(mobile_codes.mcc(str(code)))

        for country in countries:
            country_code = country.alpha2
            results.add(self.result_type(
                country_code=country_code,
                country_name=country.name,
                accuracy=geoip_accuracy(country_code)))

        if len(results):
            query.emit_source_stats(self.source, results[0])
        else:
            results.add(self.result_type())

        return results
Exemplo n.º 16
0
    def check_model_result(self, results, models, **kw):
        type_ = self.TestSource.result_type
        if not isinstance(results, ResultList):
            results = ResultList(results)

        if not models:
            for result in results:
                self.assertTrue(result.empty())
                self.assertEqual(type(result), type_)
            return

        if not isinstance(models, list):
            models = [models]

        expected = []
        if type_ is Position:
            check_func = self.assertAlmostEqual
            for model in models:
                accuracy = kw.get('accuracy', model.radius)
                if isinstance(model, (CellOCID, CellShard)):
                    accuracy = min(max(accuracy, CELL_MIN_ACCURACY),
                                   CELL_MAX_ACCURACY)
                elif isinstance(model, (CellArea, CellAreaOCID)):
                    accuracy = min(max(accuracy, CELLAREA_MIN_ACCURACY),
                                   CELLAREA_MAX_ACCURACY)
                elif isinstance(model, WifiShard):
                    accuracy = min(max(accuracy, WIFI_MIN_ACCURACY),
                                   WIFI_MAX_ACCURACY)
                expected.append({
                    'lat': kw.get('lat', model.lat),
                    'lon': kw.get('lon', model.lon),
                    'accuracy': accuracy,
                })
        elif type_ is Region:
            check_func = self.assertEqual
            for model in models:
                expected.append({
                    'region_code': model.code,
                    'region_name': model.name,
                })

        for expect, result in zip(expected, results):
            self.assertFalse(result.empty())
            self.assertEqual(type(result), type_)
            for key, value in expect.items():
                check_func(getattr(result, key), value)
Exemplo n.º 17
0
 def test_add_many(self):
     results = ResultList(self._make_result())
     results.add((self._make_result(), self._make_result()))
     assert len(results) == 3
Exemplo n.º 18
0
 def test_len(self):
     results = ResultList()
     results.add(self._make_result())
     results.add(self._make_result())
     assert len(results) == 2
Exemplo n.º 19
0
 def test_init(self):
     results = ResultList(self._make_result())
     assert len(results) == 1
Exemplo n.º 20
0
 def test_getitem(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     self.assertEqual(results[0], result)
Exemplo n.º 21
0
 def check_should_search(self, query, should, results=None):
     if results is None:
         results = ResultList(self.source.result_type())
     elif isinstance(results, list):
         results = ResultList(results)
     self.assertIs(self.source.should_search(query, results), should)
Exemplo n.º 22
0
 def test_add(self):
     results = ResultList()
     results.add(self._make_result())
     self.assertEqual(len(results), 1)
Exemplo n.º 23
0
 def test_add_many(self):
     results = ResultList(self._make_result())
     results.add((self._make_result(), self._make_result()))
     self.assertEqual(len(results), 3)
Exemplo n.º 24
0
 def test_add_many(self):
     results = ResultList(self._make_result())
     results.add((self._make_result(), self._make_result()))
     self.assertEqual(len(results), 3)
Exemplo n.º 25
0
 def test_getitem(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     assert results[0] == result
Exemplo n.º 26
0
 def test_add(self):
     results = ResultList()
     results.add(Result())
     self.assertEqual(len(results), 1)
Exemplo n.º 27
0
 def test_len(self):
     results = ResultList()
     results.add(self._make_result())
     results.add(self._make_result())
     assert len(results) == 2
Exemplo n.º 28
0
 def test_add_many(self):
     results = ResultList(self._make_result())
     results.add((self._make_result(), self._make_result()))
     assert len(results) == 3
Exemplo n.º 29
0
 def test_len(self):
     results = ResultList()
     results.add(Result())
     results.add(Result())
     self.assertEqual(len(results), 2)
Exemplo n.º 30
0
 def test_getitem(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     assert results[0] == result
Exemplo n.º 31
0
 def test_getitem(self):
     result = self._make_result()
     results = ResultList()
     results.add(result)
     self.assertEqual(results[0], result)
Exemplo n.º 32
0
 def test_len(self):
     results = ResultList()
     results.add(self._make_result())
     results.add(self._make_result())
     self.assertEqual(len(results), 2)
Exemplo n.º 33
0
 def test_check_empty(self):
     query = self.model_query()
     result = self.source.result_type()
     self.assertFalse(self.source.should_search(query, ResultList(result)))
Exemplo n.º 34
0
 def test_should_search(self):
     query = self._make_query()
     empty = self.source.result_type()
     self.assertTrue(self.source.should_search(query, ResultList(empty)))
Exemplo n.º 35
0
 def test_init(self):
     results = ResultList(self._make_result())
     self.assertEqual(len(results), 1)