#!/usr/bin/env ruby # Test our basic RDF API # Dan Brickley # $Id: tc_basicapi.rb,v 1.2 2003/04/18 18:06:10 danbri Exp $ $LOAD_PATH.unshift '../lib/' $LOAD_PATH.unshift '../../lib/' require 'basicrdf' require 'test/unit' class TC_BasicAPI < Test::Unit::TestCase FOAF='http://xmlns.com/foaf/0.1/' DC='http://purl.org/dc/elements/1.1' attr_accessor :db def setup @db=Graph.new([]) end def test_got_db assert(@db != nil, "We need a database to test.") end def test_populate assert @db.size==0, 'It should start out empty' @db.tell Statement.new(Node.getBlank, FOAF+'name' ,Node.getLiteral("Dan Brickley")) assert @db.size==1, 'After one addition, should contain a single triple.' @db.tell Statement.new(Node.getBlank, FOAF+'name', Node.getLiteral("Libby Miller")) assert @db.size==2,"After 2nd eaddition, should contain a 2 triples." d2=Node.getBlank @db.tell(Statement.new(d2, FOAF+'mbox', Node.getResource('mailto:danbri@w3.org'))) @db.tell(Statement.new(d2, FOAF+'mbox', Node.getResource('mailto:danbri@rdfweb.org'))) @db.tell(Statement.new(d2, FOAF+'mbox', Node.getResource('mailto:daniel.brickley@bristol.ac.uk'))) assert @db.size==5,'should be 5 triples by now' a1=@db.ask(Statement.new(nil, FOAF+'mbox',Node.getResource('mailto:daniel.brickley@bristol.ac.uk'))) assert a1.size==1, 'only one triple in answerset one' danbri=a1.subjects.shift bn1=danbri.to_s bn2=a1.statements[0].subject.to_s assert bn1==bn2, 'should be two equiv ways of getting value from graph' a2=@db.ask Statement.new(bn1, FOAF+'mbox', nil) assert a2.size==3, 'should get three mailbox uris' names=[] @db.ask(Statement.new(nil,FOAF+'name',nil)).objects.each {|n| names.push n} # puts "Actual:"+names.inspect mismatch=false expected_names=['Dan Brickley','Libby Miller'] names.each do |name| assert(name.class.to_s=="Node","literal values are represented as Node instances. type found: #{name.class}") name=name.to_s # puts "Looking for name matching find: #{name} type: #{name.type}" mismatch=true unless assert expected_names.member?(name)==true, "Found name, string: #{name} should be expected in list: #{expected_names.inspect}" end @db.tell Statement.new(a1, FOAF+'age', Node.getLiteral("31")) # to much of a crock to even test, currently. i can't remember the api! # --danbri # a1.reg_xmlns 'foaf', FOAF # assert danbri.type.to_s=="Node", 'Test node should be of type Node' # assert danbri.foaf_age=='31','age should be 31, use node api' end def teardown @db=nil end end