ruby: Add unit test for new RLenValue type
[hivex.git] / python / t / 210-setvalue.py
1 # hivex Python bindings
2 # Copyright (C) 2010 Red Hat Inc.
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 import sys
19 import os
20 import hivex
21
22 srcdir = os.environ["srcdir"]
23 if not srcdir:
24     srcdir = "."
25
26 h = hivex.Hivex ("%s/../images/minimal" % srcdir,
27                  write = True)
28 assert h
29
30 root = h.root ()
31 assert root
32
33 h.node_add_child (root, "B")
34
35 b = h.node_get_child (root, "B")
36 assert b
37
38 values = [
39     { "key": "Key1", "t": 3, "value": "ABC" },
40     { "key": "Key2", "t": 3, "value": "DEF" }
41 ]
42 h.node_set_values (b, values)
43
44 value1 = { "key": "Key3", "t": 3, "value": "GHI" }
45 h.node_set_value (b, value1)
46
47 value1 = { "key": "Key1", "t": 3, "value": "JKL" }
48 h.node_set_value (b, value1)
49
50 # In Python2, the data is returned as a string.  In Python3, it is
51 # returned as bytes.  Provide a function to convert either to a string.
52 def to_string (data):
53     if sys.version_info[0] == 2:
54         return data
55     else:
56         return str (data, "utf-8")
57
58 val = h.node_get_value (b, "Key1")
59 t_data = h.value_value (val)
60 assert t_data[0] == 3
61 assert to_string (t_data[1]) == "JKL"
62
63 val = h.node_get_value (b, "Key3")
64 t_data = h.value_value (val)
65 assert t_data[0] == 3
66 assert to_string (t_data[1]) == "GHI"