1# -*- Mode: Perl -*-
2#
3# test1.t - Redland perl test 1 - RDF::Redland::CORE low level APIs
4#
5# Copyright (C) 2000-2003 David Beckett - http://www.dajobe.org/
6# Copyright (C) 2000-2003 University of Bristol - http://www.bristol.ac.uk/
7#
8# This package is Free Software and part of Redland http://librdf.org/
9#
10# It is licensed under the following three licenses as alternatives:
11#   1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
12#   2. GNU General Public License (GPL) V2 or any newer version
13#   3. Apache License, V2.0 or any newer version
14#
15# You may not use this file except in compliance with at least one of
16# the above three licenses.
17#
18# See LICENSE.html or LICENSE.txt at the top of this package for the
19# full license terms.
20#
21#
22#
23
24######################### We start with some black magic to print on failure.
25
26BEGIN { $| = 1; print "1..6\n"; }
27END {print "not ok 1\n" unless $loaded;}
28use RDF::Redland::CORE;
29$loaded = 1;
30print "ok 1\n";
31
32######################### End of black magic.
33
34use strict;
35
36my $test=2;
37
38# Test using RDF::Redland::CORE module only
39
40my $debug=defined $ENV{'TEST_VERBOSE'};
41
42my $world=&RDF::Redland::CORE::librdf_new_world();
43&RDF::Redland::CORE::librdf_world_open($world);
44&RDF::Redland::CORE::librdf_perl_world_init($world);
45
46my $storage=&RDF::Redland::CORE::librdf_new_storage($world, "hashes", "test", "new='yes',hash-type='memory',dir='.'");
47if(!$storage) {
48  warn "Redland::librdf_new_storage failed\n";
49  print "not ok $test\n";
50  exit 1;
51}
52print "ok $test\n";
53$test++;
54
55my $model=&RDF::Redland::CORE::librdf_new_model($world, $storage, "");
56if(!$model) {
57  warn "Redland::librdf_new_model failed\n";
58  print "not ok $test\n";
59  exit 1;
60}
61print "ok $test\n";
62$test++;
63
64my $statement=&RDF::Redland::CORE::librdf_new_statement_from_nodes($world,
65							  &RDF::Redland::CORE::librdf_new_node_from_uri_string($world, "http://www.dajobe.org/"),
66							  &RDF::Redland::CORE::librdf_new_node_from_uri_string($world, "http://purl.org/dc/elements/1.1/creator"),
67							  &RDF::Redland::CORE::librdf_new_node_from_literal($world, "Dave Beckett", "", 0)
68							  );
69if(!$statement) {
70  warn "Redland::librdf_new_statement_from_nodes failed\n";
71  print "not ok $test\n";
72  exit 1;
73}
74print "ok $test\n";
75$test++;
76
77&RDF::Redland::CORE::librdf_model_add_statement($model, $statement);
78&RDF::Redland::CORE::librdf_free_statement($statement);
79$statement=undef;
80
81
82$statement=&RDF::Redland::CORE::librdf_new_statement($world);
83my $stream=&RDF::Redland::CORE::librdf_model_find_statements($model,$statement);
84&RDF::Redland::CORE::librdf_free_statement($statement);
85$statement=undef;
86
87my $failed=0;
88while(!&RDF::Redland::CORE::librdf_stream_end($stream)) {
89  $statement=&RDF::Redland::CORE::librdf_stream_get_object($stream);
90  my $s=&RDF::Redland::CORE::librdf_statement_to_string($statement);
91  if(!length $s) {
92    warn "Redland::librdf_new_statement_to_string failed\n";
93    print "not ok $test\n";
94    $failed=1;
95    last;
96  }
97  warn "found statement: $s\n" if $debug;
98  &RDF::Redland::CORE::librdf_stream_next($stream);
99}
100&RDF::Redland::CORE::librdf_free_stream($stream);
101$stream=undef;
102last if $failed;
103
104print "ok $test\n";
105$test++;
106
107my $source_node=&RDF::Redland::CORE::librdf_new_node_from_uri_string($world, "http://www.dajobe.org/");
108my $target_node=&RDF::Redland::CORE::librdf_new_node_from_uri_string($world, "http://purl.org/dc/elements/1.1/creator");
109
110my $iterator=&RDF::Redland::CORE::librdf_model_get_targets($model,$source_node,$target_node);
111$failed=0;
112while(!&RDF::Redland::CORE::librdf_iterator_end($iterator)) {
113  my $node=&RDF::Redland::CORE::librdf_iterator_get_object($iterator);
114  my $n=&RDF::Redland::CORE::librdf_node_to_string($node);
115  if(!length $n) {
116    warn "Redland::librdf_node_to_string failed\n";
117    print "not ok $test\n";
118    $failed=1;
119    last;
120  }
121  warn "found node: $n\n" if $debug;
122  &RDF::Redland::CORE::librdf_iterator_next($iterator);
123}
124&RDF::Redland::CORE::librdf_free_iterator($iterator);
125$iterator=undef;
126&RDF::Redland::CORE::librdf_free_node($source_node);
127$source_node=undef;
128&RDF::Redland::CORE::librdf_free_node($target_node);
129$target_node=undef;
130
131unless($failed)  {
132  print "ok $test\n";
133}
134
135$test++;
136
137&RDF::Redland::CORE::librdf_free_model($model);
138$model=undef;
139&RDF::Redland::CORE::librdf_free_storage($storage);
140$storage=undef;
141
142&RDF::Redland::CORE::librdf_perl_world_finish();
143$world=undef;
144
145exit 0;
146