aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cellcompare_check.c46
1 files changed, 40 insertions, 6 deletions
diff --git a/tests/cellcompare_check.c b/tests/cellcompare_check.c
index f5787753..0c3709ba 100644
--- a/tests/cellcompare_check.c
+++ b/tests/cellcompare_check.c
@@ -126,7 +126,7 @@ static int check_ccpao(UnitCell *cell, UnitCell *cref, double *tols,
b = " with compare_cell_parameters_and_orientation";
if ( compare_cell_parameters_and_orientation(cell, cref,
- tols[0], tols[3]) != should_match )
+ tols) != should_match )
{
complain(cell, cref, a, b);
return 1;
@@ -145,8 +145,8 @@ static int check_cpcpao(UnitCell *cell, UnitCell *cref, double *tols,
a = should_match ? "" : "NOT ";
b = " with compare_permuted_cell_parameters_and_orientation";
- if ( compare_permuted_cell_parameters_and_orientation(cell, cref,
- tols[0], tols[3], &m) != should_match )
+ if ( compare_permuted_cell_parameters_and_orientation(cell, cref, tols, &m)
+ != should_match )
{
complain(cell, cref, a, b);
intmat_free(m);
@@ -157,17 +157,46 @@ static int check_cpcpao(UnitCell *cell, UnitCell *cref, double *tols,
}
+static int check_cdcp(UnitCell *cell, UnitCell *cref, double *tols,
+ RationalMatrix *tr, int should_match)
+{
+ RationalMatrix *m = NULL;
+ const char *a;
+ const char *b;
+
+ a = should_match ? "" : "NOT ";
+ b = " with compare_derivative_cell_parameters";
+
+ if ( compare_derivative_cell_parameters(cref, cell, tols, 1, &m) != should_match )
+ {
+ complain(cell, cref, a, b);
+ STATUS("The transformation matrix to create the cell was:\n");
+ rtnl_mtx_print(tr);
+ STATUS("Cell comparison says do this to the reference to "
+ "create the cell:\n");
+ rtnl_mtx_print(m);
+ rtnl_mtx_free(m);
+ return 1;
+ }
+ rtnl_mtx_free(m);
+ return 0;
+}
+
+
static int check_crcp(UnitCell *cell, UnitCell *cref, double *tols,
RationalMatrix *tr, int should_match)
{
RationalMatrix *m = NULL;
const char *a;
const char *b;
+ UnitCell *match;
a = should_match ? "" : "NOT ";
b = " with compare_reindexed_cell_parameters";
- if ( compare_reindexed_cell_parameters(cref, cell, tols, 1, &m) != should_match )
+ match = compare_reindexed_cell_parameters(cell, cref, tols, &m);
+
+ if ( (match != NULL) != should_match )
{
complain(cell, cref, a, b);
STATUS("The transformation matrix to create the cell was:\n");
@@ -250,6 +279,7 @@ int main(int argc, char *argv[])
if ( check_ccp(cell, cref, tols, 1) ) return 1;
if ( check_ccpao(cell, cref, tols, 0) ) return 1;
if ( check_cpcpao(cell, cref, tols, 0) ) return 1;
+ if ( check_cdcp(cell, cref, tols, NULL, 1) ) return 1;
if ( check_crcp(cell, cref, tols, NULL, 1) ) return 1;
cell_free(cell);
@@ -267,6 +297,7 @@ int main(int argc, char *argv[])
if ( check_ccp(cell, cref, tols, intmat_is_identity(tr)) ) return 1;
if ( check_ccpao(cell, cref, tols, intmat_is_identity(tr)) ) return 1;
if ( check_cpcpao(cell, cref, tols, 1) ) return 1;
+ if ( check_cdcp(cell, cref, tols, NULL, 1) ) return 1;
if ( check_crcp(cell, cref, tols, NULL, 1) ) return 1;
cell_free(cell);
@@ -290,6 +321,7 @@ int main(int argc, char *argv[])
if ( check_ccp(cell, cref, tols, intmat_is_identity(tr)) ) return 1;
if ( check_ccpao(cell, cref, tols, 0) ) return 1;
if ( check_cpcpao(cell, cref, tols, 0) ) return 1;
+ if ( check_cdcp(cell, cref, tols, NULL, 1) ) return 1;
if ( check_crcp(cell, cref, tols, NULL, 1) ) return 1;
cell_free(cell);
@@ -318,7 +350,8 @@ int main(int argc, char *argv[])
if ( check_ccp(cell, cref, tols, rtnl_mtx_is_identity(tr)) ) return 1;
if ( check_ccpao(cell, cref, tols, rtnl_mtx_is_identity(tr)) ) return 1;
if ( check_cpcpao(cell, cref, tols, rtnl_mtx_is_perm(tr)) ) return 1;
- if ( check_crcp(cell, cref, tols, tr, 1) ) return 1;
+ if ( check_cdcp(cell, cref, tols, tr, 1) ) return 1;
+ /* check_crcp: Sometimes yes, hard to tell */
cell_free(cell);
rtnl_mtx_free(tr);
@@ -348,7 +381,8 @@ int main(int argc, char *argv[])
if ( check_ccp(cell, cref, tols, rtnl_mtx_is_identity(tr)) ) return 1;
if ( check_ccpao(cell, cref, tols, 0) ) return 1;
if ( check_cpcpao(cell, cref, tols, 0) ) return 1;
- if ( check_crcp(cell, cref, tols, tr, 1) ) return 1;
+ if ( check_cdcp(cell, cref, tols, tr, 1) ) return 1;
+ /* check_crcp: Sometimes yes, hard to tell */
cell_free(cell);
rtnl_mtx_free(tr);