File Coverage

blib/lib/Test/Attean/TripleStore.pm
Criterion Covered Total %
statement 17 17 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod 0 1 0.0
total 24 25 96.0


line stmt bran cond sub pod time code
1              
2             use v5.14;
3 1     1   554 use warnings;
  1         4  
4 1     1   6 use Test::Roo::Role;
  1         2  
  1         23  
5 1     1   347 use Test::Moose;
  1         422  
  1         4  
6 1     1   1336 use Attean;
  1         93094  
  1         4  
7 1     1   465 use Attean::RDF;
  1         2  
  1         9  
8 1     1   5  
  1         2  
  1         12  
9             requires 'create_store'; # create_store( triples => \@triples )
10              
11       6 0   test 'get_triples' => sub {
12             my $self = shift;
13             my $t1 = triple(iri('http://example.org/s'), iri('http://example.org/p'), iri('http://example.org/o'));
14             my $t2 = triple(iri('http://example.org/x'), iri('http://example.org/y'), iri('http://example.org/z'));
15             my @triples = ($t1, $t2);
16             my $store = $self->create_store(triples => \@triples);
17             ok $store->does('Attean::API::Store');
18             ok $store->does('Attean::API::TripleStore');
19             $self->cleanup_store($store);
20             };
21              
22             test 'count_triples' => sub {
23             my $self = shift;
24             my @triples;
25             foreach (1 .. 20) {
26             push(@triples, triple(iri('http://example.org/s'), iri('http://example.org/p'), literal($_)));
27             }
28             foreach (1,10,20,50) {
29             push(@triples, triple(iri('http://example.org/z'), iri('http://example.org/p'), literal($_)));
30             }
31             foreach (1 .. 20) {
32             push(@triples, triple(iri('http://example.org/s'), iri('http://example.org/q'), blank("b$_")));
33             }
34             my $store = $self->create_store(triples => \@triples);
35             is($store->count_triples(iri('http://example.org/UNEXPECTED')), 0, 'unexpected IRI');
36             is($store->count_triples(iri('http://example.org/s')), 40, 'expected subject');
37             is($store->count_triples(undef, iri('http://example.org/q')), 20, 'expected predicate');
38             is($store->count_triples(undef, undef, literal('7')), 1, 'expected object');
39             is($store->count_triples(undef, undef, literal('10')), 2, 'expected object (2)');
40             is($store->count_triples(iri('http://example.org/z'), undef, literal('10')), 1, 'expected subject/object');
41             is($store->count_triples(variable('s'), iri('http://example.org/q')), 20, 'expected predicate with variable');
42             is($store->count_triples(variable('s'), variable('p'), literal('7')), 1, 'expected object with variable');
43             is($store->count_triples(variable('s'), variable('p'), literal('10')), 2, 'expected object (2) with variable');
44             is($store->count_triples(iri('http://example.org/z'), variable('o'), literal('10')), 1, 'expected subject/object with variable');
45             cmp_ok($store->count_triples_estimate(iri('http://example.org/z')), '>=', 0, 'count_triples_estimate');
46             $self->cleanup_store($store);
47             };
48              
49              
50             # test 'count_triples_estimate' => sub {};
51              
52             test 'size' => sub {
53             my $self = shift;
54             foreach my $size (1, 10, 25, 57) {
55             my @triples;
56             foreach (1 .. $size) {
57             push(@triples, triple(iri('http://example.org/s'), iri('http://example.org/p'), literal($_)));
58             }
59             my $store = $self->create_store(triples => \@triples);
60             is($store->size(), $size);
61             $self->cleanup_store($store);
62             }
63             };
64              
65             1;