|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 223 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,7 @@ |
|||||||
|
# Field position for data items |
||||||
|
ID = 0 |
||||||
|
FILE = 1 |
||||||
|
GEO = 2 |
||||||
|
TITLE = 3 |
||||||
|
DESCRIPTION = 4 |
||||||
|
POS = 5 |
||||||
@ -1,9 +0,0 @@ |
|||||||
# Field position for data items |
|
||||||
ID = 0 |
|
||||||
FILE = 1 |
|
||||||
LON = 2 |
|
||||||
LAT = 3 |
|
||||||
TITLE = 4 |
|
||||||
DESCRIPTION = 5 |
|
||||||
POSX = 6 |
|
||||||
POSY = 7 |
|
||||||
@ -0,0 +1,6 @@ |
|||||||
|
# Universal geo pos tuple |
||||||
|
LAT = 0 |
||||||
|
LON = 1 |
||||||
|
|
||||||
|
X = 0 |
||||||
|
Y = 1 |
||||||
@ -0,0 +1,130 @@ |
|||||||
|
import pytest |
||||||
|
import main |
||||||
|
|
||||||
|
######### |
||||||
|
# In order to reduce the dependency of method shifting(), |
||||||
|
# the position is not explicitly checked. |
||||||
|
######### |
||||||
|
|
||||||
|
@pytest.fixture(autouse=True) |
||||||
|
def patch_log(monkeypatch): |
||||||
|
monkeypatch.setattr(main, "log", lambda msg: None) |
||||||
|
monkeypatch.setattr(main, "logvv", lambda msg: None) |
||||||
|
|
||||||
|
def test_single_item_no_match(): |
||||||
|
|
||||||
|
matrixdims = (6, 3) |
||||||
|
|
||||||
|
pos = (0,0) |
||||||
|
before = {1:pos} |
||||||
|
|
||||||
|
after = main.make_pos_free((2, 3), before, matrixdims) |
||||||
|
assert after[1] == pos |
||||||
|
|
||||||
|
|
||||||
|
def test_single_item_match_at_0_0(): |
||||||
|
|
||||||
|
pos = (0,0) |
||||||
|
before = {1:pos} |
||||||
|
|
||||||
|
matrixdims = (6, 3) |
||||||
|
after = main.make_pos_free(pos, before, matrixdims) |
||||||
|
assert after[1] != pos |
||||||
|
|
||||||
|
|
||||||
|
def test_single_item_match_at_horizont(): |
||||||
|
|
||||||
|
pos = (0, 1) |
||||||
|
before = {1:pos} |
||||||
|
|
||||||
|
# Y |
||||||
|
# 0 |
||||||
|
# 1 <--- Horizon |
||||||
|
# 2 |
||||||
|
matrixdims = (99, 2) |
||||||
|
after = main.make_pos_free(pos, before, matrixdims) |
||||||
|
assert after[1] != pos |
||||||
|
|
||||||
|
|
||||||
|
def test_single_item_match_at_upper(): |
||||||
|
|
||||||
|
pos = (0, 0) |
||||||
|
before = {1:pos} |
||||||
|
|
||||||
|
# Y |
||||||
|
# 0 |
||||||
|
# 1 <--- Horizon |
||||||
|
# 2 |
||||||
|
matrixdims = (99, 2) |
||||||
|
after = main.make_pos_free(pos, before, matrixdims) |
||||||
|
assert after[1] != pos |
||||||
|
|
||||||
|
|
||||||
|
def test_single_item_match_at_lower(): |
||||||
|
|
||||||
|
pos = (0, 2) |
||||||
|
before = {1:pos} |
||||||
|
|
||||||
|
# Y |
||||||
|
# 0 ^ |
||||||
|
# 1 <--- Horizon | Lower | Upper |
||||||
|
# 2 V |
||||||
|
matrixdims = (99, 2) |
||||||
|
after = main.make_pos_free(pos, before, matrixdims) |
||||||
|
assert after[1] != pos |
||||||
|
|
||||||
|
|
||||||
|
def test_first_item(): |
||||||
|
|
||||||
|
pos = (1,1) |
||||||
|
matrixdims = (6, 3) |
||||||
|
|
||||||
|
before = [] |
||||||
|
after = main.make_pos_free(pos, before, matrixdims) |
||||||
|
assert len(after) == 0 |
||||||
|
|
||||||
|
|
||||||
|
def test_check_direct_neighbours_upwards(): |
||||||
|
|
||||||
|
matrixdims = (1000, 1000) |
||||||
|
|
||||||
|
pos = (100,200) |
||||||
|
|
||||||
|
before = { |
||||||
|
1:(pos[main.P.X] , pos[main.P.Y] ), |
||||||
|
2:(pos[main.P.X] , pos[main.P.Y]-1 ), |
||||||
|
} |
||||||
|
|
||||||
|
after = main.make_pos_free(pos, before, matrixdims) |
||||||
|
|
||||||
|
for i in after: |
||||||
|
for j in after: |
||||||
|
if i == j: |
||||||
|
continue |
||||||
|
assert after[j] != after[i], f"i={i}, j={j}: Two items may not have the same position: {after[i]}" |
||||||
|
|
||||||
|
|
||||||
|
def test_multiple_item_no_match(): |
||||||
|
|
||||||
|
matrixdims = (6, 3) |
||||||
|
|
||||||
|
pos = (1,1) |
||||||
|
|
||||||
|
before = { |
||||||
|
1:(pos[main.P.X]+1, pos[main.P.Y] ), |
||||||
|
2:(pos[main.P.X]-1, pos[main.P.Y] ), |
||||||
|
3:(pos[main.P.X] , pos[main.P.Y]+1), |
||||||
|
4:(pos[main.P.X] , pos[main.P.Y]-1), |
||||||
|
5:(pos[main.P.X]+1, pos[main.P.Y]+1), |
||||||
|
6:(pos[main.P.X]+1, pos[main.P.Y]-1), |
||||||
|
7:(pos[main.P.X]-1, pos[main.P.Y]+1), |
||||||
|
8:(pos[main.P.X]-1, pos[main.P.Y]-1), |
||||||
|
} |
||||||
|
|
||||||
|
after = main.make_pos_free(pos, before, matrixdims) |
||||||
|
|
||||||
|
for i in after: |
||||||
|
for j in after: |
||||||
|
if i == j: |
||||||
|
continue |
||||||
|
assert after[j] != after[i], f"i={i}, j={j}: Two items may not have the same position: {after[i]}" |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
import pytest |
||||||
|
import main |
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True) |
||||||
|
def patch_log(monkeypatch): |
||||||
|
monkeypatch.setattr(main, "log", lambda msg: None) |
||||||
|
monkeypatch.setattr(main, "logvv", lambda msg: None) |
||||||
|
|
||||||
|
def test_shifting_top(): |
||||||
|
|
||||||
|
assert main.shifting((2,3), (4,5)) == (2,4) |
||||||
|
|
||||||
|
def test_shifting_mid(): |
||||||
|
|
||||||
|
assert main.shifting((20,24), (21,49)) == (20,23) |
||||||
|
|
||||||
|
def test_shifting_botom(): |
||||||
|
|
||||||
|
assert main.shifting((20,26), (21,49)) == (20,27) |
||||||