1 #include <glib.h>
2 #include <locale.h>
3 #include "lensfun.h"
4
5 typedef struct {
6 lfDatabase* db;
7 } lfFixture;
8
9
db_setup(lfFixture * lfFix,gconstpointer data)10 void db_setup(lfFixture *lfFix, gconstpointer data)
11 {
12 lfFix->db = new lfDatabase ();
13 lfFix->db->Load("data/db");
14 }
15
16
db_teardown(lfFixture * lfFix,gconstpointer data)17 void db_teardown(lfFixture *lfFix, gconstpointer data)
18 {
19 delete lfFix->db;
20 }
21
22
23 // test different lens search strings
test_DB_lens_search(lfFixture * lfFix,gconstpointer data)24 void test_DB_lens_search(lfFixture* lfFix, gconstpointer data)
25 {
26 const lfLens **lenses = NULL;
27
28 // search only by name
29 lenses = lfFix->db->FindLenses (NULL, NULL, "pEntax 50-200 ED");
30 g_assert_nonnull(lenses);
31 g_assert_cmpstr(lenses[0]->Model, ==, "smc Pentax-DA 50-200mm f/4-5.6 DA ED");
32 g_assert_true(lfLens(*lenses[0]).Check());
33 lf_free (lenses);
34
35 lenses = lfFix->db->FindLenses (NULL, NULL, "smc Pentax-DA 50-200mm f/4-5.6 DA ED");
36 g_assert_nonnull(lenses);
37 g_assert_cmpstr(lenses[0]->Model, ==, "smc Pentax-DA 50-200mm f/4-5.6 DA ED");
38 g_assert_true(lfLens(*lenses[0]).Check());
39 lf_free (lenses);
40
41 lenses = lfFix->db->FindLenses (NULL, NULL, "PENTAX fa 28mm 2.8");
42 g_assert_nonnull(lenses);
43 g_assert_cmpstr(lenses[0]->Model, ==, "smc Pentax-FA 28mm f/2.8 AL");
44 g_assert_true(lfLens(*lenses[0]).Check());
45 lf_free (lenses);
46
47 // search lens for a certain camera considering mount compatibilities
48 const lfCamera **cameras = NULL;
49 cameras = lfFix->db->FindCamerasExt("Ricoh", "k-70");
50 g_assert_nonnull(cameras);
51
52 lenses = lfFix->db->FindLenses (cameras[0], NULL, "Fotasy M3517 35mm");
53 g_assert_nonnull(lenses);
54 g_assert_cmpstr(lenses[0]->Model, ==, "Fotasy M3517 35mm f/1.7");
55 g_assert_true(lfLens(*lenses[0]).Check());
56 lf_free (lenses);
57
58 lf_free(cameras);
59 }
60
61 // test different camera search strings
test_DB_cam_search(lfFixture * lfFix,gconstpointer data)62 void test_DB_cam_search(lfFixture* lfFix, gconstpointer data)
63 {
64 const lfCamera **cameras = NULL;
65
66 cameras = lfFix->db->FindCamerasExt("pentax", "K100D");
67 g_assert_nonnull(cameras);
68 g_assert_cmpstr(cameras[0]->Model, ==, "Pentax K100D");
69 g_assert_true(lfCamera(*cameras[0]).Check());
70 lf_free (cameras);
71
72 cameras = lfFix->db->FindCamerasExt(NULL, "K 100 D");
73 g_assert_nonnull(cameras);
74 g_assert_cmpstr(cameras[0]->Model, ==, "Pentax K100D");
75 g_assert_true(lfCamera(*cameras[0]).Check());
76 lf_free (cameras);
77
78 cameras = lfFix->db->FindCamerasExt(NULL, "PentAX K100 D");
79 g_assert_nonnull(cameras);
80 g_assert_cmpstr(cameras[0]->Model, ==, "Pentax K100D");
81 g_assert_true(lfCamera(*cameras[0]).Check());
82 lf_free (cameras);
83
84 }
85
86 // copy some entries into a new database file
test_DB_save(lfFixture * lfFix,gconstpointer data)87 void test_DB_save(lfFixture* lfFix, gconstpointer data)
88 {
89
90 lfDatabase* db2 = new lfDatabase ();
91
92 const lfCamera **cameras = NULL;
93 const lfLens **lenses = NULL;
94
95 cameras = lfFix->db->FindCamerasExt("pentax", "K100D");
96 lenses = lfFix->db->FindLenses (NULL, NULL, "smc Pentax-DA 50-200mm f/4-5.6 DA ED");
97
98 lfLens* lens = new lfLens(*lenses[0]);
99 lfCamera* camera = new lfCamera(*cameras[0]);
100
101 db2->AddCamera(camera);
102 db2->AddLens(lens);
103 db2->Save("test_db.xml");
104
105 delete db2;
106
107 lf_free (lenses);
108 lf_free (cameras);
109
110 }
111
main(int argc,char ** argv)112 int main (int argc, char **argv)
113 {
114
115 setlocale (LC_ALL, "");
116
117 g_test_init(&argc, &argv, NULL);
118
119 g_test_add("/database/camera search", lfFixture, NULL, db_setup, test_DB_cam_search, db_teardown);
120 g_test_add("/database/lens search", lfFixture, NULL, db_setup, test_DB_lens_search, db_teardown);
121 g_test_add("/database/save", lfFixture, NULL, db_setup, test_DB_save, db_teardown);
122
123 return g_test_run();
124 }
125