/*! @header FTCreateGraphTEST @abstract Module of FT @availability OS X, GNUstep @copyright 2004, 2005 Free Software Foundation, Inc. Author: Oliver Langer 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  -------------------------------------------------------------------------
  Modification history

  23.02.05 ola     initial version
  -------------------------------------------------------------------------
  
*/ #include #include "FTCreateGraphTEST.h" @implementation FTCreateGraphTEST - testGraphCreation { id graphManager; id graph; id graphId; id nid1,nid2,nid3,e1, e2; id objectToIdMapper; id graphIdMapper; id n1,n2,n3; id edge; id transaction; id nodeIterator; NSLog( @"FTCreateGraphTEST::testGraphCreation: BEGINNING...." ); EC_AUTORELEASEPOOL_BEGIN objectToIdMapper = [session defaultObjectToIdMapper]; graphManager = [session graphManager]; NSLog( @"Now creating graph..." ); transaction = [session beginTransactionWithParent: nil withSettings: nil]; graphId = [objectToIdMapper mapObject: @"firstGraph"]; graph = [graphManager createGraphWithId: graphId]; ECAssertTrue( nil != graph, @"Graph creation failed!" ); NSLog( @"Now creating some nodes..." ); graphIdMapper = [[graph objectToIdMapper] retain]; ECAssertTrue( nil != graphIdMapper, @"getting objectToIdMapper of graph FAILED" ); NSLog( @"Creating nodes and relationships..." ); nid1 = [graphIdMapper mapObject: @"fatherNode"]; nid2 = [graphIdMapper mapObject: @"child_1_Node"]; nid3 = [graphIdMapper mapObject: @"child_2_Node"]; e1 = [graphIdMapper mapObject: @"edge1"]; e2 = [graphIdMapper mapObject: @"edge2"]; n1 = [graph createNodeWithId: nid1]; n2 = [graph createNodeWithId: nid2]; n3 = [graph createNodeWithId: nid3]; NSLog( @"Created nodes n1, n2, n3" ); edge = [n1 createAndAppendEdgeWithId: e1 withTargetNode: n2]; edge = [n1 createAndAppendEdgeWithId: e2 withTargetNode: n3]; NSLog( @"Performing a commit..." ); [transaction commit]; NSLog( @"Graph created! Now trying to read the graph" ); graphId = [objectToIdMapper mapObject: @"firstGraph"]; [graph close]; graphId = [objectToIdMapper mapObject: @"firstGraph"]; graph = [graphManager graphWithId: graphId]; NSLog( @"Got graph! Now reading nodes..." ); n1 = [graph nodeWithId: nid1]; ECAssertTrue( n1 != nil, @"Unable to fetch node with id=\"fatherNode\"" ); NSLog( @"All nodes loaded!" ); /** * Now checking links... */ NSLog( @"Loading node n2..." ); nodeIterator = [n1 outgoingNodes]; ECAssertTrue( [nodeIterator hasNext], @"Unable to read first node of n1!" ); n2 = [nodeIterator next]; ECAssertTrue( YES == [[n2 nodeId] isEqual: nid2], @"Expected node n2!" ); NSLog( @"Node n2 LOADED. Now loading n3..." ); ECAssertTrue( [nodeIterator hasNext], @"Unable to read second node of n1!" ); n3 = [nodeIterator next]; ECAssertTrue( YES == [[n3 nodeId] isEqual: nid3], @"Expected node n3!" ); NSLog( @"Node n3 LOADED." ); NSLog( @"Closing Graph..." ); [graph close]; EC_AUTORELEASEPOOL_END NSLog( @"FTCreateGraphTEST::testGraphCreation: FINISHED" ); return self; } @end