def test_sort_schools_by_grade(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) elem_school_1 = hier_gen.generate_school('Elementary School', district, ID_GEN) elem_school_2 = hier_gen.generate_school('Elementary School', district, ID_GEN) elem_school_3 = hier_gen.generate_school('Elementary School', district, ID_GEN) midl_school_1 = hier_gen.generate_school('Middle School', district, ID_GEN) midl_school_2 = hier_gen.generate_school('Middle School', district, ID_GEN) high_school = hier_gen.generate_school('High School', district, ID_GEN) schools_by_grade = hier_gen.sort_schools_by_grade([ elem_school_1, elem_school_2, elem_school_3, midl_school_1, midl_school_2, high_school ]) # Tests assert len(schools_by_grade.keys()) == 13 assert len(schools_by_grade[0]) == 3 assert len(schools_by_grade[1]) == 3 assert len(schools_by_grade[2]) == 3 assert len(schools_by_grade[3]) == 3 assert len(schools_by_grade[4]) == 3 assert len(schools_by_grade[5]) == 3 assert len(schools_by_grade[6]) == 2 assert len(schools_by_grade[7]) == 2 assert len(schools_by_grade[8]) == 2 assert len(schools_by_grade[9]) == 1 assert len(schools_by_grade[10]) == 1 assert len(schools_by_grade[11]) == 1 assert len(schools_by_grade[12]) == 1
def test_set_lang_items_lep_entry_date_exited(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) student = pop_gen.generate_student(school, 11, ID_GEN, 2015, ['ELA', 'Math']) student.prg_lep = True student.lang_code = None student.lang_prof_level = None student.lang_title_3_prg = None student.prg_lep_entry_date = None student.prg_lep_exit_date = None pop_gen._set_lang_items(student, lep_has_entry_date_rate=1, lep_proficiency_levels=['good'], lep_proficiency_levels_exit=['good']) # Tests assert student.lang_title_3_prg is None assert student.prg_lep_entry_date is not None assert student.prg_lep_exit_date is not None
def test_set_up_schools_with_grades(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) elem_school_1 = hier_gen.generate_school('Elementary School', district, ID_GEN) elem_school_2 = hier_gen.generate_school('Elementary School', district, ID_GEN) elem_school_3 = hier_gen.generate_school('Elementary School', district, ID_GEN) midl_school_1 = hier_gen.generate_school('Middle School', district, ID_GEN) midl_school_2 = hier_gen.generate_school('Middle School', district, ID_GEN) high_school = hier_gen.generate_school('High School', district, ID_GEN) schools_with_grades = hier_gen.set_up_schools_with_grades([ elem_school_1, elem_school_2, elem_school_3, midl_school_1, midl_school_2, high_school ], {3, 4, 5, 6, 7, 8, 11}) # Tests assert len(schools_with_grades) == 6 assert len(schools_with_grades[elem_school_1]) == 3 assert len(schools_with_grades[elem_school_2]) == 3 assert len(schools_with_grades[elem_school_3]) == 3 assert len(schools_with_grades[midl_school_1]) == 3 assert len(schools_with_grades[midl_school_2]) == 3 assert len(schools_with_grades[high_school]) == 1
def generate_hierarchy(type, name, code, id_gen: IDGen): state = hier_gen.generate_state(type, name, code, id_gen) districts = [] schools = [] for district_type, dist_type_count in state.config[ 'district_types_and_counts']: for _ in range(dist_type_count): district = hier_gen.generate_district(district_type, state, id_gen) districts.append(district) # Create the schools for the district if district.config['school_counts']['min'] < district.config[ 'school_counts']['avg']: school_count = random.triangular( district.config['school_counts']['min'], district.config['school_counts']['max'], district.config['school_counts']['avg']) else: school_count = district.config['school_counts']['min'] convert_config_school_count_to_ratios(district.config) for school_type, school_type_ratio in district.config[ 'school_types_and_ratios'].items(): school_type_count = max(int(school_count * school_type_ratio), 1) # Make sure at least 1 for _ in range(school_type_count): school = hier_gen.generate_school(school_type, district, id_gen) schools.append(school) return state, districts, schools
def test_generate_state(): # Create object state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) # Tests assert isinstance(state, State) assert state.id == '00' assert state.name == 'Example State' assert state.code == 'ES'
def test_generate_district(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) # Tests assert isinstance(district, District) assert district.state == state assert re.match(state.id + '[0-9]{5}0*', district.id) assert district.id[:2] == state.id
def test_generate_school(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN) # Tests assert isinstance(school, School) assert school.district == district assert re.match(district.id + '[0-9]{5}', school.id)
def test_generate_staff(): state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) staff = pop_gen.generate_teaching_staff_member(school, ID_GEN) # Tests assert isinstance(staff, TeachingStaff)
def test_generate_school_interims(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) # Test assert school.takes_interim_asmts
def test_generate_derived_demographic_no_ethnicities(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) student = pop_gen.generate_student(school, 11, ID_GEN, 2015, ['ELA', 'Math']) student.reset_ethnicity() # Test assert pop_gen._generate_derived_demographic(student) == -1
def test_advance_student_advanced(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) midl_school = hier_gen.generate_school('Middle School', district, ID_GEN, interim_asmt_rate=1) student = pop_gen.generate_student(midl_school, 6, ID_GEN, 2015, ['ELA', 'Math']) schools_by_grade = {grade: [midl_school] for grade in midl_school.grades} # Test assert pop_gen.advance_student(student, schools_by_grade, hold_back_rate=0)
def test_advance_student_drop_out(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) high_school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) student = pop_gen.generate_student(high_school, 11, ID_GEN, 2015, ['ELA', 'Math']) schools_by_grade = {grade: [high_school] for grade in high_school.grades} # Test assert not pop_gen.advance_student( student, schools_by_grade, hold_back_rate=1, drop_out_rate=1)
def test_generate_institution_hierarchy(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN) ih = hier_gen.generate_institution_hierarchy(state, district, school, ID_GEN) # Tests assert isinstance(ih.rec_id, int) assert re.match(GUID_REGEX, ih.guid) assert ih.state == state assert ih.district == district assert ih.school == school assert ih.from_date == datetime.date(2014, 9, 1) assert ih.to_date == datetime.date(9999, 12, 31)
def test_generate_student(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) student = pop_gen.generate_student(school, 11, ID_GEN, 2015, ['ELA', 'Math']) # Tests assert isinstance(student, Student) assert re.match('[0-9]+', student.id) assert re.match('[a-f0-9]+', student.external_ssid) assert student.school_entry_date.year == 2003 assert student.school_entry_date.month in [8, 9]
def test_repopulate_school_grade_empty_with_additional(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) elem_school = hier_gen.generate_school('Elementary School', district, ID_GEN) elem_school.config['students']['min'], elem_school.config['students'][ 'max'] = 100, 100 elem_school.config['students']['avg'] = 100 students = [] pop_gen.repopulate_school_grade(elem_school, 3, students, ID_GEN, None, 2015, ['Math', 'ELA'], additional_student_choice=[3]) # Test assert len(students) == 103
def test_set_lang_items_lep(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) student = pop_gen.generate_student(school, 11, ID_GEN, 2015, ['ELA', 'Math']) student.prg_lep = True student.lang_code = None student.lang_prof_level = None student.lang_title_3_prg = None student.prg_lep_entry_date = None student.prg_lep_exit_date = None pop_gen._set_lang_items(student, lep_proficiency_levels_exit=[]) # Tests assert student.lang_code in cfg.LEP_LANGUAGE_CODES assert student.lang_prof_level in cfg.LEP_PROFICIENCY_LEVELS assert student.lang_title_3_prg in cfg.LEP_TITLE_3_PROGRAMS
def test_repopulate_school_grade_almost_full_additional(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) elem_school = hier_gen.generate_school('Elementary School', district, ID_GEN) elem_school.config['students']['min'], elem_school.config['students'][ 'max'] = 100, 100 elem_school.config['students']['avg'] = 100 students = [] for _ in range(99): students.append( pop_gen.generate_student(elem_school, 4, ID_GEN, 2015, ['ELA', 'Math'])) pop_gen.repopulate_school_grade(elem_school, 4, students, ID_GEN, None, 2015, ['Math', 'ELA'], additional_student_choice=[2]) # Test assert len(students) == 102
def test_set_lang_items_not_lep(): # Create objects state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) school = hier_gen.generate_school('High School', district, ID_GEN, interim_asmt_rate=1) student = pop_gen.generate_student(school, 11, ID_GEN, 2015, ['ELA', 'Math']) student.prg_lep = False student.lang_code = None student.lang_prof_level = None student.lang_title_3_prg = None student.prg_lep_entry_date = None student.prg_lep_exit_date = None pop_gen._set_lang_items(student, ifep_rate=0) # Tests assert student.lang_code is None assert student.lang_prof_level is None assert student.lang_title_3_prg is None assert student.prg_lep_entry_date is None assert student.prg_lep_exit_date is None
def test_generate_school_invalid_type(): state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN) district = hier_gen.generate_district('Big Average', state, ID_GEN) with pytest.raises(LookupError): hier_gen.generate_school('unknown', district, ID_GEN)
def test_generate_state_invalid_type(): with pytest.raises(LookupError): hier_gen.generate_state('unknown', 'Example State', 'ES', ID_GEN)