diff --git a/lib/cadet/assessments/library.ex b/lib/cadet/assessments/library.ex index 00a7f3d2d..a847d7545 100644 --- a/lib/cadet/assessments/library.ex +++ b/lib/cadet/assessments/library.ex @@ -55,10 +55,14 @@ defmodule Cadet.Assessments.Library do @valid_chapter_variants [ {1, "wasm"}, {1, "lazy"}, + {1, "native"}, {2, "lazy"}, + {2, "native"}, {3, "concurrent"}, {3, "non-det"}, - {4, "gpu"} + {3, "native"}, + {4, "gpu"}, + {4, "native"} ] defp validate_chapter_variant(changeset) do diff --git a/lib/cadet/courses/course.ex b/lib/cadet/courses/course.ex index 9b9ebaeb1..c3258e11b 100644 --- a/lib/cadet/courses/course.ex +++ b/lib/cadet/courses/course.ex @@ -59,16 +59,21 @@ defmodule Cadet.Courses.Course do {true, true} -> case get_field(changeset, :source_chapter) do 1 -> - validate_inclusion(changeset, :source_variant, ["default", "lazy", "wasm"]) + validate_inclusion(changeset, :source_variant, ["default", "lazy", "wasm", "native"]) 2 -> - validate_inclusion(changeset, :source_variant, ["default", "lazy"]) + validate_inclusion(changeset, :source_variant, ["default", "lazy", "native"]) 3 -> - validate_inclusion(changeset, :source_variant, ["default", "concurrent", "non-det"]) + validate_inclusion(changeset, :source_variant, [ + "default", + "concurrent", + "non-det", + "native" + ]) 4 -> - validate_inclusion(changeset, :source_variant, ["default", "gpu"]) + validate_inclusion(changeset, :source_variant, ["default", "gpu", "native"]) _ -> add_error(changeset, :source_chapter, "is invalid") diff --git a/test/cadet/assessments/library_test.exs b/test/cadet/assessments/library_test.exs index 4608eafdd..5bb949e09 100644 --- a/test/cadet/assessments/library_test.exs +++ b/test/cadet/assessments/library_test.exs @@ -40,13 +40,17 @@ defmodule Cadet.Assessments.LibraryTest do {1, "default"}, {1, "wasm"}, {1, "lazy"}, + {1, "native"}, {2, "default"}, {2, "lazy"}, + {2, "native"}, {3, "default"}, {3, "concurrent"}, {3, "non-det"}, + {3, "native"}, {4, "default"}, - {4, "gpu"} + {4, "gpu"}, + {4, "native"} ] for {c, v} <- variants do diff --git a/test/cadet/courses/course_test.exs b/test/cadet/courses/course_test.exs index da782b36c..d95a2dcf1 100644 --- a/test/cadet/courses/course_test.exs +++ b/test/cadet/courses/course_test.exs @@ -123,6 +123,15 @@ defmodule Cadet.Courses.CourseTest do :valid ) + assert_changeset( + %{ + source_chapter: 3, + source_variant: "native", + course_name: "Data Structures and Algorithms" + }, + :valid + ) + assert_changeset( %{ source_chapter: 4,