Skip to content

Commit

Permalink
add remove_course! function
Browse files Browse the repository at this point in the history
  • Loading branch information
haydenfree committed Jul 10, 2024
1 parent 67e8405 commit 041187f
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/CurricularAnalytics.jl
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export AA, AAS, AS, AbstractCourse, AbstractRequirement, BA, BS, Course, CourseC
gad, grade, homology, is_duplicate, is_valid, isvalid_curriculum, isvalid_degree_plan, level, longest_path, longest_paths, merge_curricula, pass_table, passrate_table,
pre, postorder_traversal, preorder_traversal, print_plan, quarter, reach, reach_subgraph, reachable_from, reachable_from_subgraph, reachable_to, reachable_to_subgraph,
read_csv, requisite_distance, requisite_type, semester, set_passrates, set_passrate_for_course, set_passrates_from_csv, show_requirements, similarity, simple_students,
simulate, simulation_report, strict_co, topological_sort, total_credits, transfer_equiv, tree_edge, write_csv, knowledge_transfer, csv_stream
simulate, simulation_report, strict_co, topological_sort, total_credits, transfer_equiv, tree_edge, write_csv, knowledge_transfer, csv_stream, remove_course!

"""
extraneous_requisites(c::Curriculum; print=false)
Expand Down
24 changes: 24 additions & 0 deletions src/DataTypes/CourseCatalog.jl
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,36 @@ function add_course!(cc::CourseCatalog, course::Course)
!is_duplicate(cc, course) ? cc.catalog[course.id] = course : nothing
end

"""
remove_course!(cc::CourseCatalog, course::Course)
Remove `course` from the course catalog `cc` if it exists in the catalog.
Otherwise, do nothing.
"""
function remove_course!(cc::CourseCatalog, course::Course)
if is_duplicate(cc, course)
delete!(cc.catalog, course.id)
end
end

function add_course!(cc::CourseCatalog, courses::Array{Course,1})
for course in courses
add_course!(cc, course)
end
end

"""
remove_course!(cc::CourseCatalog, courses::Array{Course,1})
Remove all courses in `courses` from the course catalog `cc` if they exist in the catalog.
Otherwise, do nothing.
"""
function remove_course!(cc::CourseCatalog, courses::Array{Course,1})
for course in courses
remove_course!(cc, course)
end
end

function is_duplicate(cc::CourseCatalog, course::Course)
course.id in keys(cc.catalog) ? true : false
end
Expand Down
9 changes: 9 additions & 0 deletions test/DataTypes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,15 @@ add_course!(CCat, [E,F,G]);
@test (CCat.date_range[2] - CCat.date_range[1]) == Dates.Day(365)
@test A == course(CCat, "BW", "110", "Introduction to Baskets")

# Test remove_course! functions
remove_course!(CCat, E);
@test length(CCat.catalog) == 6
remove_course!(CCat, [F,G]);
@test length(CCat.catalog) == 4

# add the courses back for later testing
add_course!(CCat, [E,F,G]);

# Test DegreePlan creation, other degree plan functions tested in ./test/DegreePlanAnalytics.jl
@test dp.name == "2019 Plan"
@test dp.curriculum === curric # tests that they're the same object in memory
Expand Down

0 comments on commit 041187f

Please sign in to comment.