Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Udayraj123
GitHub Repository: Udayraj123/OMRChecker
Path: blob/master/src/tests/test_edge_cases.py
228 views
1
import os
2
from pathlib import Path
3
4
import pandas as pd
5
6
from src.tests.test_samples.sample2.boilerplate import (
7
CONFIG_BOILERPLATE,
8
TEMPLATE_BOILERPLATE,
9
)
10
from src.tests.utils import (
11
generate_write_jsons_and_run,
12
remove_file,
13
run_entry_point,
14
setup_mocker_patches,
15
)
16
17
FROZEN_TIMESTAMP = "1970-01-01"
18
CURRENT_DIR = Path("src/tests")
19
BASE_SAMPLE_PATH = CURRENT_DIR.joinpath("test_samples", "sample2")
20
BASE_RESULTS_CSV_PATH = os.path.join(
21
"outputs", BASE_SAMPLE_PATH, "Results", "Results_05AM.csv"
22
)
23
BASE_MULTIMARKED_CSV_PATH = os.path.join(
24
"outputs", BASE_SAMPLE_PATH, "Manual", "MultiMarkedFiles.csv"
25
)
26
27
28
def run_sample(mocker, input_path):
29
setup_mocker_patches(mocker)
30
output_dir = os.path.join("outputs", input_path)
31
run_entry_point(input_path, output_dir)
32
33
34
def extract_output_data(path):
35
output_data = pd.read_csv(path, keep_default_na=False)
36
return output_data
37
38
39
write_jsons_and_run = generate_write_jsons_and_run(
40
run_sample,
41
sample_path=BASE_SAMPLE_PATH,
42
template_boilerplate=TEMPLATE_BOILERPLATE,
43
config_boilerplate=CONFIG_BOILERPLATE,
44
)
45
46
47
def test_config_low_dimensions(mocker):
48
def modify_config(config):
49
config["dimensions"]["processing_height"] = 1000
50
config["dimensions"]["processing_width"] = 1000
51
52
exception = write_jsons_and_run(mocker, modify_config=modify_config)
53
54
assert str(exception) == "No Error"
55
56
57
def test_different_bubble_dimensions(mocker):
58
# Prevent appending to output csv:
59
remove_file(BASE_RESULTS_CSV_PATH)
60
remove_file(BASE_MULTIMARKED_CSV_PATH)
61
62
exception = write_jsons_and_run(mocker)
63
assert str(exception) == "No Error"
64
original_output_data = extract_output_data(BASE_RESULTS_CSV_PATH)
65
66
def modify_template(template):
67
# Incorrect global bubble size
68
template["bubbleDimensions"] = [5, 5]
69
# Correct bubble size for MCQBlock1a1
70
template["fieldBlocks"]["MCQBlock1a1"]["bubbleDimensions"] = [32, 32]
71
# Incorrect bubble size for MCQBlock1a11
72
template["fieldBlocks"]["MCQBlock1a11"]["bubbleDimensions"] = [10, 10]
73
74
remove_file(BASE_RESULTS_CSV_PATH)
75
remove_file(BASE_MULTIMARKED_CSV_PATH)
76
exception = write_jsons_and_run(mocker, modify_template=modify_template)
77
assert str(exception) == "No Error"
78
79
results_output_data = extract_output_data(BASE_RESULTS_CSV_PATH)
80
81
assert results_output_data.empty
82
83
output_data = extract_output_data(BASE_MULTIMARKED_CSV_PATH)
84
85
equal_columns = [f"q{i}" for i in range(1, 18)]
86
assert (
87
output_data[equal_columns].iloc[0].to_list()
88
== original_output_data[equal_columns].iloc[0].to_list()
89
)
90
91
unequal_columns = [f"q{i}" for i in range(168, 185)]
92
assert not (
93
output_data[unequal_columns].iloc[0].to_list()
94
== original_output_data[unequal_columns].iloc[0].to_list()
95
)
96
97