Example #1
0
def test_intersects_row():
    g = Geomatcher()
    assert g.intersects("RoW") == []
    assert g.intersects("RoW", include_self=True) == []
    assert g.intersects("RoW", include_self=True, only=['NO', 'LT', "RoW"]) == ["RoW"]
    assert g.intersects(('ecoinvent', 'NORDEL'), only=["NO", "RoW"]) == ["NO"]
    assert g.intersects("NO", only=["NO", "RoW"], include_self=True, exclusive=True) == ["NO"]
    assert g.intersects("NO", only=["NO", "RoW"], include_self=True, exclusive=False) == ["NO"]
    assert g.intersects(('ecoinvent', 'BALTSO'), include_self=False, exclusive=True, only=['RoW', 'EE', 'LT', 'LV']) == ['EE', 'LT', 'LV']
    assert g.intersects(('ecoinvent', 'BALTSO'), include_self=False, exclusive=True, only=['RoW', 'LT', 'LV']) == ['LT', 'LV']
Example #2
0
def test_finish_filter_row_exclusive_row_key():
    g = Geomatcher()
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1)], 'RoW', False, True, True) == []
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1)], 'RoW', True, True, True) == []
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1), ('RoW', 0)], 'RoW', False, True, True) == []
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1), ('RoW', 0)], 'RoW', True, True, True) == ['RoW']
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1)], 'RoW', False, True, False) == []
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1)], 'RoW', True, True, False) == []
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1), ('RoW', 0)], 'RoW', False, True, False) == []
    assert g._finish_filter([('NO', 4), ('LT', 3), ('LV', 2), ('EE', 1), ('RoW', 0)], 'RoW', True, True, False) == ['RoW']
Example #3
0
def test_add_definitions():
    g = Geomatcher({})
    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
    }
    g.add_definitions(given, "foo", False)
    assert ("foo", "A") in g.topology
    assert g.faces == {1, 2, 3, 4}
    assert "NO" not in g
    assert "GLO" not in g
Example #4
0
def test_actual_key_coco():
    given = {
        'AT': {1, 2},
    }
    g = Geomatcher(given, 'silly')

    assert g['AT']
    assert g['Austria']

    g = Geomatcher(given, 'silly', use_coco=False)
    assert g['AT']
    with pytest.raises(KeyError):
        g['Austria']
Example #5
0
def test_add_definitions_relative():
    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
    }
    extra = {
        'C': ['A', 'B']
    }
    g = Geomatcher(given)
    g.add_definitions(extra, "foo")
    assert g.topology[("foo", "C")] == {1, 2, 3, 4}
    assert 'A' in g.topology
    assert "NO" not in g
    assert "GLO" not in g
Example #6
0
def test_finish_filter_row_ordering():
    # Test non-exclusive ordering of RoW; RoW not key
    given = {
        'A': set(range(10)),
        'B': {2, 3, 4},
        'C': {3, 4, 5},
        'D': {10, 11},
        'E': {5, 6, 10},
    }
    g = Geomatcher(given)
    lst = [('B', 6), ('RoW', 7), ('D', 8), ('E', 9)]
    result = g._finish_filter(lst, 'A', False, False, True)
    assert result[-1] == 'RoW'
    result = g._finish_filter(lst, 'A', False, False, False)
    assert result[0] == 'RoW'
Example #7
0
def test_finish_filter_exclusive():
    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
        'C': {3, 4, 5},
        'D': {10, 11},
        'E': {5, 6, 10},
    }
    g = Geomatcher(given)
    lst = [('A', 5), ('B', 6), ('C', 7), ('D', 8), ('E', 9)]
    result = g._finish_filter(lst, 'A', True, True, True)
    # Start with E (biggest), then B (next possible)
    assert result == ["E", "B"]
    result = g._finish_filter(lst, 'A', True, True, False)
    # Start with A (smallest), then D (next possible)
    assert result == ['A', 'D']
Example #8
0
def test_provide_topology():
    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
    }
    g = Geomatcher(given.copy())
    assert g.topology == given
Example #9
0
def test_row_contextmanager_add_remove_row():
    g_orig = Geomatcher()
    assert 'RoW' not in g_orig
    with resolved_row(['NO', 'LT', 'EE'], g_orig) as g:
        assert 'RoW' in g
        assert 'RoW' in g_orig
        assert g is g_orig
    assert 'RoW' not in g_orig
Example #10
0
def test_contained():
    g = Geomatcher()
    expected = [
        'US',
        ('ecoinvent', 'US-ASCC'),
        ('ecoinvent', 'US-NPCC'),
        ('ecoinvent', 'US-HICC'),
        ('ecoinvent', 'US-WECC'),
        ('ecoinvent', 'US-SERC'),
        ('ecoinvent', 'US-RFC'),
        ('ecoinvent', 'US-FRCC'),
        ('ecoinvent', 'US-MRO'),
        ('ecoinvent', 'US-SPP')
    ]
    assert g.contained("US")[:5] == expected[:5]
    expected.pop(0)
    assert g.contained("US", include_self=False)[:5] == expected[:5]
    assert g.contained("US", include_self=False, exclusive=True)[:5] == expected[:5]
    assert g.contained("US", biggest_first=False, include_self=False)[-1] == ('ecoinvent', 'US-ASCC')

    expected = [
        'US',
        ('ecoinvent', 'US-ASCC'),
        ('ecoinvent', 'US-NPCC'),
        ('ecoinvent', 'US-HICC'),
        ('ecoinvent', 'US-WECC'),
    ]
    only = [
        ('ecoinvent', 'US-WECC'),
        'US',
        ('ecoinvent', 'US-NPCC'),
        ('ecoinvent', 'US-ASCC'),
        ('ecoinvent', 'US-HICC'),
    ]
    assert g.contained("US", only=only) == expected
Example #11
0
def test_within():
    g = Geomatcher()
    expected = [
        'GLO',
        ('ecoinvent', 'UN-EUROPE'),
        ('ecoinvent', 'FSU'),
        ('ecoinvent', 'UN-EEUROPE'),
        ('ecoinvent', 'IAI Area, Russia & RER w/o EU27 & EFTA'),
        'RU',
    ]
    assert g.within("RU") == expected
    expected.pop(-1)
    assert g.within("RU", include_self=False) == expected
    assert g.within("RU", exclusive=True) == ['GLO']
    expected = [
        'RU',
        ('ecoinvent', 'IAI Area, Russia & RER w/o EU27 & EFTA'),
        ('ecoinvent', 'UN-EEUROPE'),
        ('ecoinvent', 'FSU'),
        ('ecoinvent', 'UN-EUROPE'),
        'GLO',
    ]
    assert g.within("RU", biggest_first=False) == expected

    expected = [
        ('ecoinvent', 'UN-EUROPE'),
        ('ecoinvent', 'FSU'),
        ('ecoinvent', 'UN-EEUROPE'),
    ]
    only = [
        ('ecoinvent', 'UN-EUROPE'),
        ('ecoinvent', 'FSU'),
        ('ecoinvent', 'UN-EEUROPE'),
    ]
    assert g.within("RU", only=only) == expected
Example #12
0
def test_contained_row():
    g = Geomatcher()
    assert g.contained("RoW") == []
    assert g.contained("RoW", include_self=True, only=["RoW"]) == ["RoW"]
    assert 'RoW' not in g.contained("GLO", only=['NO', 'RoW'])
    assert 'RoW' not in g.contained("GLO")
    assert 'RoW' not in g.contained(("ecoinvent", "RAS"), only=['NO', 'LT', 'RoW'])
Example #13
0
def test_row_contextmanager_datasets_or_locations():
    g_orig = Geomatcher()
    with resolved_row(['NO', 'LT', 'EE'], g_orig) as g:
        assert 'RoW' in g.intersects(('ecoinvent', 'BALTSO'))
    given = [
        {'location': 'NO'},
        {'location': 'LT'},
        {'location': 'EE'},
    ]
    with resolved_row(given, g_orig) as g:
        assert 'RoW' in g.intersects(('ecoinvent', 'BALTSO'))
Example #14
0
def test_intersects():
    g = Geomatcher()
    expected = [
        'GLO',
        ('ecoinvent', 'UN-AMERICAS'),
        ('ecoinvent', 'RLA'),
        ('ecoinvent', 'UN-CARIBBEAN'),
    ]
    assert g.intersects("CU") == expected
    assert g.intersects("CU", exclusive=True) == ['GLO']
    expected = [
        ('ecoinvent', 'UN-CARIBBEAN'),
        ('ecoinvent', 'RLA'),
        ('ecoinvent', 'UN-AMERICAS'),
        'GLO',
    ]
    assert g.intersects("CU", biggest_first=False) == expected

    only = [
        ('ecoinvent', 'RLA'),
        ('ecoinvent', 'UN-AMERICAS'),
    ]
    expected = [
        ('ecoinvent', 'UN-AMERICAS'),
        ('ecoinvent', 'RLA'),
    ]
    assert g.intersects("CU", only=only) == expected
Example #15
0
def test_default_setup():
    cg = ConstructiveGeometries()

    geomatcher = Geomatcher()
    assert 'GLO' in geomatcher
    assert 'RoW' not in geomatcher
    assert geomatcher["RoW"] == set()
    assert len(geomatcher["GLO"]) > 400
    assert geomatcher["AS"] == set(cg.data['AS'])
    assert geomatcher[('ecoinvent', 'Russia (Europe)')] == set(cg.data['Russia (Europe)'])
    assert geomatcher["Japan"] == set(cg.data['JP'])

    with pytest.raises(KeyError):
        geomatcher["Nope"]
Example #16
0
def test_magic_methods():
    g = Geomatcher()
    assert len(g) > 400
    for _ in g:
        pass

    assert 'NO' in g
    assert g['NO']

    del g['NO']
    del g['Russia (Europe)']

    g['foo'] = {1, 2, 3}
    assert 'foo' in g
Example #17
0
def test_actual_key():
    given = {
        'A': {1, 2, 3},
        ('silly', 'B'): {2, 3, 4},
    }
    g = Geomatcher(given, 'silly')
    assert g['A']
    assert g['B']
    assert g['B']
    assert g[('silly', 'B')]

    with pytest.raises(KeyError):
        g[('silly', 'A')]

    assert g._actual_key('RoW') == 'RoW'

    g = Geomatcher()
    assert g._actual_key('GLO') == 'GLO'
Example #18
0
def test_split_faces():
    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
    }
    expected = {
        'A': {1, 2, 5, 6},
        'B': {2, 5, 6, 4},
    }
    g = Geomatcher(given)
    g.split_face(3)
    assert g.topology == expected
    assert 3 not in g.faces
    assert 5 in g.faces

    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
    }
    expected = {
        'A': {1, 2, 5, 6, 7},
        'B': {2, 5, 6, 7, 4},
    }
    g = Geomatcher(given)
    g.split_face(3, number=3)
    assert g.topology == expected

    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
    }
    expected = {
        'A': {1, 2, 10, 11},
        'B': {2, 10, 11, 4},
    }
    g = Geomatcher(given)
    g.split_face(3, ids={10, 11})
    assert g.topology == expected

    given = {
        'A': {1, 2, 3},
        'B': {2, 3, 4},
    }
    expected = {
        'A': {1, 2, 10, 11},
        'B': {2, 10, 11, 4},
    }
    g = Geomatcher(given)
    g.split_face(3, number=5, ids={10, 11})
    assert g.topology == expected
Example #19
0
def test_row_contextmanager_within():
    g_orig = Geomatcher()
    with resolved_row(['NO', 'LT', 'EE'], g_orig) as g:
        assert g.within('RoW') == ['GLO', 'RoW']
        assert g.within('RoW', biggest_first=False) == ['RoW', 'GLO']
Example #20
0
def test_row_contextmanager_contained():
    g_orig = Geomatcher()
    with resolved_row(['NO', 'LT', 'EE'], g_orig) as g:
        assert 'RoW' not in g.contained(('ecoinvent', 'BALTSO'))
        assert 'LT' in g.contained(('ecoinvent', 'BALTSO'))
        assert 'RoW' in g.contained('GLO')
Example #21
0
def test_row_contextmanager_intersects():
    g_orig = Geomatcher()
    with resolved_row(['NO', 'LT', 'EE'], g_orig) as g:
        assert 'RoW' in g.intersects(('ecoinvent', 'BALTSO'))
Example #22
0
def test_finish_filter_not_include_self():
    g = Geomatcher({'A': {1, 2}})
    given = [('A', 4), ('B', 6), ('C', 3)]
    assert g._finish_filter(deepcopy(given), 'A', False, False, True) == ['B', 'C']
    assert g._finish_filter(deepcopy(given), 'A', False, False, False) == ['C', 'B']
Example #23
0
def test_within_row():
    g = Geomatcher()
    assert g.within("RoW") == ['GLO']
    del g['GLO']
    assert g.within("RoW") == []
Example #24
0
File: geo.py Project: polca/wurst
def test_remind_added():
    assert ("REMIND", "EUR") in geomatcher
    g = Geomatcher()
    assert ("REMIND", "EUR") not in g
Example #25
0
def test_empty_topology():
    g = Geomatcher({})
    assert g.topology == {}
    assert g.faces == set()
    assert "NO" not in g
    assert "GLO" not in g
Example #26
0
from .IMAGE import IMAGE_TOPOLOGY
from constructive_geometries import Geomatcher


geomatcher = Geomatcher()
geomatcher.add_definitions(IMAGE_TOPOLOGY, "IMAGE", relative=True)
Example #27
0
File: geo.py Project: polca/wurst
def test_image_added():
    assert ("IMAGE", "OCE") in geomatcher
    g = Geomatcher()
    assert ("IMAGE", "OCE") not in g