// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include #include "../image_analysis/scale_merge/HKLKey.h" TEST_CASE("HKLKey_NoSG_noMergeFriedel") { HKLKeyGenerator hkl_key_gen(false, 1); CHECK(hkl_key_gen(-1, -2, -3) != hkl_key_gen(1,2,3)); CHECK(hkl_key_gen(-1,-2,-3) == hkl_key_gen(-1,-2,-3)); CHECK(hkl_key_gen(-1,-2,-3) != hkl_key_gen(1,-2,-3)); } TEST_CASE("HKLKey_NoSG_MergeFriedel") { HKLKeyGenerator hkl_key_gen(true, 1); CHECK(hkl_key_gen(-1, -2, -3) == hkl_key_gen(1,2,3)); CHECK(hkl_key_gen(-1,-2,-3) == hkl_key_gen(-1,-2,-3)); CHECK(hkl_key_gen(-1,-2,-3) != hkl_key_gen(1,-2,-3)); } TEST_CASE("HKLKey_SG1_MergeFriedel") { HKLKeyGenerator hkl_key_gen(true, *gemmi::find_spacegroup_by_number(1)); CHECK(hkl_key_gen(-1, -2, -3) == hkl_key_gen(1,2,3)); CHECK(hkl_key_gen(-1,-2,-3) == hkl_key_gen(-1,-2,-3)); CHECK(hkl_key_gen(-1,-2,-3) != hkl_key_gen(1,-2,-3)); } TEST_CASE("HKLKey_SG1_NoMergeFriedel") { HKLKeyGenerator hkl_key_gen(false, *gemmi::find_spacegroup_by_number(1)); CHECK(hkl_key_gen(-1, -2, -3) != hkl_key_gen(1,2,3)); CHECK(hkl_key_gen(-1,-2,-3) == hkl_key_gen(-1,-2,-3)); CHECK(hkl_key_gen(-1,-2,-3) != hkl_key_gen(1,-2,-3)); } TEST_CASE("HKLKey_SG96_MergeFriedel") { HKLKeyGenerator hkl_key_gen(true, *gemmi::find_spacegroup_by_number(96)); CHECK(hkl_key_gen(-1, -2, -3) == hkl_key_gen(1,2,3)); CHECK(hkl_key_gen(-1,-2,-3) == hkl_key_gen(-1,-2,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-2,1,3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-1,-2,3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(2,-1,3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(1,-2,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-1,2,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(2,1,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-2, -1, -3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-2,-1,3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(2, 1, 3)); } TEST_CASE("HKLKey_SG96_NoMergeFriedel") { HKLKeyGenerator hkl_key_gen(false, *gemmi::find_spacegroup_by_number(96)); CHECK(hkl_key_gen(-1, -2, -3) != hkl_key_gen(1,2,3)); CHECK(hkl_key_gen(-1,-2,-3) == hkl_key_gen(-1,-2,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-2,1,3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-1,-2,3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(2,-1,3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(1,-2,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-1,2,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(2,1,-3)); CHECK(hkl_key_gen(1,2,3) == hkl_key_gen(-2, -1, -3)); CHECK(hkl_key_gen(1,2,3) != hkl_key_gen(-2,-1,3)); CHECK(hkl_key_gen(1,2,3) != hkl_key_gen(2, 1, 3)); } TEST_CASE("HKLKey_pack_friedel") { HKLKeyGenerator hkl_key_gen(false, *gemmi::find_spacegroup_by_number(1)); CHECK(hkl_key_gen(-1, -2, -3).pack() != hkl_key_gen(1,2,3).pack()); CHECK(hkl_key_gen(-1,-2,-3).pack() == hkl_key_gen(-1,-2,-3).pack()); CHECK(hkl_key_gen(-1,-2,-3).pack() != hkl_key_gen(1,-2,-3).pack()); } TEST_CASE("HKLKey_pack_no_friedel") { HKLKeyGenerator hkl_key_gen(true, *gemmi::find_spacegroup_by_number(1)); CHECK(hkl_key_gen(-1, -2, -3).pack() == hkl_key_gen(1,2,3).pack()); CHECK(hkl_key_gen(-1,-2,-3).pack() == hkl_key_gen(-1,-2,-3).pack()); CHECK(hkl_key_gen(-1,-2,-3).pack() != hkl_key_gen(1,-2,-3).pack()); } TEST_CASE("HKLKey_sys_absence_P212121") { HKLKeyGenerator hkl_key_gen(false, *gemmi::find_spacegroup_by_number(19)); CHECK(hkl_key_gen.IsSystematicallyAbsent(5,0,0)); CHECK(!hkl_key_gen.IsSystematicallyAbsent(6,0,0)); CHECK(hkl_key_gen.IsSystematicallyAbsent(0,5,0)); CHECK(hkl_key_gen.IsSystematicallyAbsent(0,0,5)); CHECK(!hkl_key_gen.IsSystematicallyAbsent(0,4,0)); CHECK(!hkl_key_gen.IsSystematicallyAbsent(5,5,5)); }