File: check_cloutput.c

package info (click to toggle)
libcomplearn 1.1.6-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 3,768 kB
  • ctags: 1,976
  • sloc: sh: 10,756; ansic: 2,839; makefile: 304
file content (112 lines) | stat: -rw-r--r-- 7,850 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <check.h>
#include "../src/complearn/complearn.h"

static char *dmstr = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
"<clb version=\"1.0\"><cllibver>0.9.9</cllibver><username>cilibrar</username><hostname>reprox</hostname><compressor>unknown</compressor><distmatrix creationtime=\"1178458118\" title=\"untitled\"><axis1><name>maketree</name><name>treemolder</name><name>improvetree</name><name>treescore</name><name>treeadaptor</name><name>treemaster</name><name>splittree</name><name>treeblaster</name><name>reordertree</name><name>treeparser</name><name>treeholder</name></axis1><axis2><name>maketree</name><name>treemolder</name><name>improvetree</name><name>treescore</name><name>treeadaptor</name><name>treemaster</name><name>splittree</name><name>treeblaster</name><name>reordertree</name><name>treeparser</name><name>treeholder</name></axis2><entries><number>0.000000</number><number>0.712270</number><number>0.707949</number><number>0.731855</number><number>0.739055</number><number>0.682316</number><number>0.699885</number><number>0.712558</number><number>0.713422</number><number>0.762385</number><number>0.721198</number><number>0.707949</number><number>0.000000</number><number>0.557563</number><number>0.501807</number><number>0.505937</number><number>0.695601</number><number>0.535581</number><number>0.471951</number><number>0.551884</number><number>0.567372</number><number>0.483738</number><number>0.708813</number><number>0.553433</number><number>0.000000</number><number>0.516490</number><number>0.466032</number><number>0.734018</number><number>0.540730</number><number>0.546577</number><number>0.151155</number><number>0.426872</number><number>0.498024</number><number>0.729839</number><number>0.495612</number><number>0.518167</number><number>0.000000</number><number>0.487982</number><number>0.708211</number><number>0.557584</number><number>0.507977</number><number>0.523756</number><number>0.538849</number><number>0.458357</number><number>0.737615</number><number>0.515746</number><number>0.469206</number><number>0.503633</number><number>0.000000</number><number>0.721114</number><number>0.558989</number><number>0.538857</number><number>0.463492</number><number>0.476825</number><number>0.480519</number><number>0.686636</number><number>0.693548</number><number>0.735191</number><number>0.712317</number><number>0.717595</number><number>0.000000</number><number>0.717302</number><number>0.617302</number><number>0.742229</number><number>0.754839</number><number>0.691202</number><number>0.693260</number><number>0.537453</number><number>0.551966</number><number>0.563202</number><number>0.551498</number><number>0.714956</number><number>0.000000</number><number>0.560393</number><number>0.551966</number><number>0.605337</number><number>0.561330</number><number>0.712558</number><number>0.464745</number><number>0.552753</number><number>0.512095</number><number>0.533711</number><number>0.616422</number><number>0.560393</number><number>0.000000</number><number>0.545548</number><number>0.568708</number><number>0.489964</number><number>0.711406</number><number>0.550852</number><number>0.149055</number><number>0.523197</number><number>0.467937</number><number>0.741642</number><number>0.538858</number><number>0.541431</number><number>0.000000</number><number>0.391078</number><number>0.512705</number><number>0.761809</number><number>0.571502</number><number>0.428272</number><number>0.542202</number><number>0.474921</number><number>0.756891</number><number>0.610955</number><number>0.571796</number><number>0.391078</number><number>0.000000</number><number>0.534161</number><number>0.721198</number><number>0.490965</number><number>0.503106</number><number>0.466182</number><number>0.479390</number><number>0.700000</number><number>0.566011</number><number>0.496140</number><number>0.517222</number><number>0.531903</number><number>0.000000</number></entries></distmatrix><commands/></clb>\n";
START_TEST (test_complearn_cloutput)
{
  struct CLDistMatrix *bdm;
  CompLearnRealCompressor *rc = complearn_environment_load_compressor_named("bzlib");
  fail_unless(rc != NULL);
  GString *cdm = real_compressor_compress(rc, g_string_new(dmstr));
  fail_unless(cdm != NULL);
  bdm = complearn_read_clb_dist_matrix(cdm);
  fail_unless(bdm != NULL);
  fail_unless(bdm->labels1a != NULL);
  fail_unless(bdm->labels2a != NULL);
  fail_unless(bdm->labels1a->len >= 0);
  fail_unless(bdm->labels2a->len >= 0);
  fail_unless(bdm->labels1a->len == 11);
  fail_unless(bdm->labels2a->len == 11);
  fail_unless(bdm->m->mat->size1 == 11);
  fail_unless(bdm->m->mat->size2 == 11);
  GString *txtmat = complearn_matrix_prettyprint_text(bdm->m);
  GString *nexmat = complearn_matrix_prettyprint_nex(bdm->m, NULL);
  fail_unless(nexmat != NULL);
  fail_unless(nexmat->str != NULL);
  fail_unless(nexmat->len > 100);
  fail_unless(txtmat != NULL);
  fail_unless(txtmat->str != NULL);
  fail_unless(txtmat->len > 100);
  fail_unless(complearn_is_nexus_file(nexmat));
  fail_unless(complearn_is_text_matrix(txtmat));
  fail_unless(strstr(nexmat->str, "treeholder") != NULL);
  GArray *a = complearn_get_nexus_labels(nexmat);
  fail_unless(bdm->m->mat->size1 == a->len);
  int i;
  LabeledMatrix *lm = complearn_load_nexus_matrix(nexmat);
  fail_unless(bdm->m->mat->size1 == complearn_count_strings(
              (const char * const *)lm->labels1));
  for (i = 0; i < bdm->m->mat->size1; i += 1) {
    char *w1 = bdm->m->labels1[i];
    char *w2 = lm->labels1[i];
    fail_unless(strcmp(w1, w2) == 0);
  }
  gsl_matrix *newm = lm->mat;
  fail_unless(newm->size1 == bdm->m->mat->size1);
  fail_unless(newm->size2 == bdm->m->mat->size2);
  int j;
  for (i = 0; i < bdm->m->mat->size1; i += 1) {
    for (j = 0; j < bdm->m->mat->size2; j += 1) {
      double d;
      d = fabs(gsl_matrix_get(bdm->m->mat, i, j) - gsl_matrix_get(newm,i,j));
      fail_unless (d <= 1e-5);
    }
  }
  LabeledMatrix *lm2 = complearn_load_any_matrix(nexmat);
  LabeledMatrix *lm3 = complearn_load_any_matrix(cdm);
  LabeledMatrix *lm4 = complearn_load_any_matrix(txtmat);
  fail_unless(lm2 != NULL);
  fail_unless(lm3 != NULL);
  fail_unless(lm4 != NULL);
  fail_unless(lm2->labels1 != NULL);
  fail_unless(lm3->labels1 != NULL);
  fail_unless(lm4->labels1 != NULL);
  fail_unless(lm2->mat->size1 == newm->size1);
  fail_unless(lm3->mat->size1 == newm->size1);
  fail_unless(lm4->mat->size1 == newm->size1);
  fail_unless(bdm->m->mat->size1 == complearn_count_strings(
              (const char * const *)lm2->labels1));
  fail_unless(bdm->m->mat->size1 == complearn_count_strings(
              (const char * const *)lm3->labels1));
  fail_unless(bdm->m->mat->size2 == complearn_count_strings(
              (const char * const *)lm3->labels2));
  fail_unless(bdm->m->mat->size1 == complearn_count_strings(
              (const char * const *)lm4->labels1));
  fail_unless(bdm->m->mat->size2 == complearn_count_strings(
              (const char * const *)lm4->labels2));
}
END_TEST

START_TEST (test_complearn_rcmem)
{
  struct CLDistMatrix *bdm;
  CompLearnRealCompressor *rc = complearn_environment_load_compressor_named("bzlib");
  fail_unless(rc != NULL);
  GString *cdm = real_compressor_compress(rc, g_string_new(dmstr));
  int i;
  for (i = 0; i < 100000; i += 1) {
    CompLearnRealCompressor *c = real_compressor_clone(rc);
    g_object_unref(c);
  }
//  fail_unless(bdm->m->mat->size2 == complearn_count_strings(
//              (const char * const *)lm4->labels2));
}
END_TEST

Suite *
cloutput_suite (void)
{
  Suite *s = suite_create ("cloutput");

  TCase *tc_core = tcase_create ("Core");
  tcase_set_timeout(tc_core, 20);
  tcase_add_test (tc_core, test_complearn_cloutput);
  tcase_add_test (tc_core, test_complearn_rcmem);
  suite_add_tcase(s, tc_core);

  return s;
}