r24667: Finally merge the registry improvements that Wilco Baan Hofman and I have
[sfrench/samba-autobuild/.git] / source4 / lib / registry / tests / diff.c
1 /* 
2    Unix SMB/CIFS implementation.
3
4    local testing of registry diff functionality
5
6    Copyright (C) Jelmer Vernooij 2007
7    
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12    
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17    
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 */
21
22 #include "includes.h"
23 #include "lib/registry/registry.h"
24 #include "lib/cmdline/popt_common.h"
25 #include "torture/torture.h"
26 #include "librpc/gen_ndr/winreg.h"
27
28 static bool test_generate_diff(struct torture_context *test)
29 {
30         /* WERROR reg_generate_diff(struct registry_context *ctx1, 
31                                   struct registry_context *ctx2, 
32                                   const struct reg_diff_callbacks *callbacks,
33                                   void *callback_data)
34                                   */
35         return true;
36 }
37
38
39 static bool test_diff_load(struct torture_context *test)
40 {
41         /* WERROR reg_diff_load(const char *filename, const struct reg_diff_callbacks *callbacks, void *callback_data) */
42
43         return true;
44 }
45
46 static bool test_diff_apply(struct torture_context *test)
47 {
48         /*
49 _PUBLIC_ WERROR reg_diff_apply (const char *filename, struct registry_context *ctx)
50         */
51
52         return true;
53 }
54
55 static const char *added_key = NULL;
56
57 static WERROR test_add_key (void *callback_data, const char *key_name)
58 {
59         added_key = talloc_strdup(callback_data, key_name);
60
61         return WERR_OK;
62 }
63
64 static bool test_generate_diff_key_add(struct torture_context *test)
65 {
66         struct reg_diff_callbacks cb;
67         struct registry_key rk;
68
69         return true;
70
71         ZERO_STRUCT(cb);
72
73         cb.add_key = test_add_key;
74
75         if (W_ERROR_IS_OK(reg_generate_diff_key(&rk, NULL, "bla", &cb, test)))
76                 return false;
77
78         torture_assert_str_equal(test, added_key, "bla", "key added");
79
80         return true;
81 }
82
83 static bool test_generate_diff_key_null(struct torture_context *test)
84 {
85         struct reg_diff_callbacks cb;
86
87         ZERO_STRUCT(cb);
88
89         if (!W_ERROR_IS_OK(reg_generate_diff_key(NULL, NULL, "", &cb, NULL)))
90                 return false;
91
92         return true;
93 }
94
95 struct torture_suite *torture_registry_diff(TALLOC_CTX *mem_ctx) 
96 {
97         struct torture_suite *suite = torture_suite_create(mem_ctx, 
98                                                                                                            "DIFF");
99         torture_suite_add_simple_test(suite, "test_generate_diff_key_add", test_generate_diff_key_add);
100         torture_suite_add_simple_test(suite, "test_generate_diff_key_null", test_generate_diff_key_null);
101         torture_suite_add_simple_test(suite, "test_diff_apply", test_diff_apply);
102         torture_suite_add_simple_test(suite, "test_generate_diff", test_generate_diff);
103         torture_suite_add_simple_test(suite, "test_diff_load", test_diff_load);
104         return suite;
105 }