diff options
author | Conrad Meyer <cemeyer@cs.washington.edu> | 2010-07-08 11:12:42 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2010-07-08 11:12:42 +0100 |
commit | 77d38592f59f146c5ef249a3f7036cf2a1e45acd (patch) | |
tree | da04d7fabd78a8c9f0a980cacbf2ffb8a3747257 /perl | |
parent | 5e804d7c421c344c0363e94206a38b0a0d06d493 (diff) | |
download | hivex-77d38592f59f146c5ef249a3f7036cf2a1e45acd.tar.gz hivex-77d38592f59f146c5ef249a3f7036cf2a1e45acd.tar.xz hivex-77d38592f59f146c5ef249a3f7036cf2a1e45acd.zip |
Add hivex_set_value API call, and ocaml and perl bindings, and tests.
Diffstat (limited to 'perl')
-rw-r--r-- | perl/t/210-setvalue.t | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/perl/t/210-setvalue.t b/perl/t/210-setvalue.t new file mode 100644 index 0000000..8e24121 --- /dev/null +++ b/perl/t/210-setvalue.t @@ -0,0 +1,65 @@ +# hivex Perl bindings -*- perl -*- +# Copyright (C) 2010 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +use strict; +use warnings; +use Test::More tests => 11; + +use Win::Hivex; + +my $srcdir = $ENV{srcdir} || "."; + +my $h = Win::Hivex->open ("$srcdir/../images/minimal", write => 1); +ok ($h); + +my $root = $h->root (); +ok ($root); + +$h->node_add_child ($root, "B"); +ok (1); + +my $b = $h->node_get_child ($root, "B"); +ok ($b); + +my $values = [ + { key => "Key1", t => 3, value => "ABC" }, + { key => "Key2", t => 3, value => "DEF" } + ]; +$h->node_set_values ($b, $values); +ok (1); + +my $value1 = { key => "Key3", t => 3, value => "GHI" }; +$h->node_set_value ($b, $value1); +ok (1); + +my $value2 = { key => "Key1", t => 3, value => "JKL" }; +$h->node_set_value ($b, $value2); +ok (1); + +my ($val, $t, $data); +$val = $h->node_get_value ($b, "Key1"); +($t, $data) = $h->value_value ($val); +ok ($t == 3); +ok ($data eq "JKL"); + +$val = $h->node_get_value ($b, "Key3"); +($t, $data) = $h->value_value ($val); +ok ($t == 3); +ok ($data eq "GHI"); + +# don't commit because that would overwrite the original file +# $h->commit (); |