2012-01-09 23:50:52 -03:00
/ *
* Copyright [ 2011 ] [ wisemapping ]
*
* Licensed under WiseMapping Public License , Version 1.0 ( the "License" ) .
* It is basically the Apache License , Version 2.0 ( the "License" ) plus the
* "powered by wisemapping" text requirement on every single page ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the license at
*
* http : //www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
2012-01-14 14:20:59 -03:00
mindplot . layout . TestSuite = new Class ( {
Extends : mindplot . layout . ChildrenSorterStrategy ,
2012-01-10 10:01:04 -03:00
2011-12-11 13:13:43 -03:00
initialize : function ( ) {
2012-01-17 17:45:51 -03:00
this . testAligned ( ) ;
this . testSymmetry ( ) ;
this . testBalanced ( ) ;
this . testEvents ( ) ;
this . testEventsComplex ( ) ;
this . testDisconnect ( ) ;
this . testReconnect ( ) ;
this . testRemoveNode ( ) ;
this . testSymmetricPredict ( ) ;
this . testBalancedPredict ( ) ;
2012-01-13 20:06:14 -03:00
this . testSize ( ) ;
2012-01-17 17:45:51 -03:00
this . testFreePosition ( ) ;
2012-01-18 16:07:40 -03:00
this . testFreePredict ( ) ;
// this.testReconnectFreeNode();
2011-12-11 13:13:43 -03:00
} ,
testAligned : function ( ) {
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2011-12-11 13:13:43 -03:00
2012-01-14 14:20:59 -03:00
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2011-12-11 13:13:43 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
2012-01-02 17:10:14 -03:00
manager . connectNode ( 1 , 2 , 0 ) ;
manager . connectNode ( 2 , 3 , 0 ) ;
manager . connectNode ( 3 , 4 , 0 ) ;
2011-12-11 13:13:43 -03:00
manager . layout ( ) ;
2012-01-10 10:01:04 -03:00
manager . plot ( "testAligned" , { width : 1200 , height : 200 } ) ;
2011-12-30 15:28:03 -03:00
2012-01-04 14:37:58 -03:00
// All nodes should be vertically aligned
2012-01-02 17:10:14 -03:00
$assert ( manager . find ( 0 ) . getPosition ( ) . y == manager . find ( 1 ) . getPosition ( ) . y , "Nodes are not aligned" ) ;
$assert ( manager . find ( 0 ) . getPosition ( ) . y == manager . find ( 2 ) . getPosition ( ) . y , "Nodes are not aligned" ) ;
$assert ( manager . find ( 0 ) . getPosition ( ) . y == manager . find ( 3 ) . getPosition ( ) . y , "Nodes are not aligned" ) ;
$assert ( manager . find ( 0 ) . getPosition ( ) . y == manager . find ( 4 ) . getPosition ( ) . y , "Nodes are not aligned" ) ;
2011-12-30 17:48:11 -03:00
} ,
testSymmetry : function ( ) {
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 12 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 13 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 14 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-04 14:37:58 -03:00
manager . connectNode ( 0 , 14 , 0 ) ;
manager . connectNode ( 14 , 13 , 0 ) ;
manager . connectNode ( 13 , 1 , 0 ) ;
manager . connectNode ( 13 , 2 , 1 ) ;
manager . connectNode ( 13 , 3 , 2 ) ;
manager . connectNode ( 13 , 4 , 3 ) ;
manager . connectNode ( 13 , 5 , 4 ) ;
2012-01-02 17:10:14 -03:00
manager . connectNode ( 1 , 6 , 0 ) ;
manager . connectNode ( 1 , 7 , 1 ) ;
2011-12-30 17:48:11 -03:00
manager . connectNode ( 7 , 8 , 0 ) ;
manager . connectNode ( 8 , 9 , 0 ) ;
2012-01-02 17:10:14 -03:00
manager . connectNode ( 5 , 10 , 0 ) ;
manager . connectNode ( 6 , 11 , 0 ) ;
manager . connectNode ( 6 , 12 , 1 ) ;
2011-12-30 17:48:11 -03:00
manager . layout ( ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testSymmetry" , { width : 1600 , height : 400 } ) ;
2012-01-02 17:10:14 -03:00
2012-01-12 17:54:18 -03:00
// All nodes should be positioned symmetrically with respect to their common ancestors
$assert ( manager . find ( 14 ) . getPosition ( ) . y == - manager . find ( 13 ) . getPosition ( ) . y , "Symmetry is not respected" ) ;
$assert ( manager . find ( 5 ) . getPosition ( ) . y == - manager . find ( 11 ) . getPosition ( ) . y , "Symmetry is not respected" ) ;
$assert ( manager . find ( 11 ) . getPosition ( ) . y - manager . find ( 6 ) . getPosition ( ) . y == - ( manager . find ( 12 ) . getPosition ( ) . y - manager . find ( 6 ) . getPosition ( ) . y ) , "Symmetry is not respected" ) ;
$assert ( manager . find ( 8 ) . getPosition ( ) . y - manager . find ( 1 ) . getPosition ( ) . y == - ( manager . find ( 11 ) . getPosition ( ) . y - manager . find ( 1 ) . getPosition ( ) . y ) , "Symmetry is not respected" ) ;
$assert ( manager . find ( 9 ) . getPosition ( ) . y - manager . find ( 1 ) . getPosition ( ) . y == - ( manager . find ( 11 ) . getPosition ( ) . y - manager . find ( 1 ) . getPosition ( ) . y ) , "Symmetry is not respected" ) ;
2012-01-02 17:10:14 -03:00
} ,
2012-01-05 17:34:14 -03:00
testBalanced : function ( ) {
var position = { x : 0 , y : 0 } ;
2012-01-12 15:51:50 -03:00
var plotsize = { width : 1000 , height : 200 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2012-01-05 17:34:14 -03:00
2012-01-14 14:20:59 -03:00
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-05 17:34:14 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced1" , plotsize ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-05 17:34:14 -03:00
manager . connectNode ( 0 , 2 , 1 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced2" , plotsize ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-05 17:34:14 -03:00
manager . connectNode ( 0 , 3 , 2 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced3" , plotsize ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-05 17:34:14 -03:00
manager . connectNode ( 0 , 4 , 3 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced4" , plotsize ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-05 17:34:14 -03:00
manager . connectNode ( 0 , 5 , 4 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced5" , plotsize ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-05 17:34:14 -03:00
manager . connectNode ( 0 , 6 , 5 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced6" , plotsize ) ;
2012-01-10 09:44:33 -03:00
2012-01-14 14:20:59 -03:00
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-10 09:44:33 -03:00
manager . connectNode ( 3 , 7 , 0 )
manager . connectNode ( 7 , 8 , 0 )
manager . connectNode ( 7 , 9 , 1 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced7" , plotsize ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 12 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-10 09:44:33 -03:00
manager . connectNode ( 6 , 10 , 0 )
manager . connectNode ( 10 , 11 , 0 )
manager . connectNode ( 10 , 12 , 1 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced8" , plotsize ) ;
2011-12-30 17:48:11 -03:00
2012-01-14 14:20:59 -03:00
manager . addNode ( 13 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 13 , 4 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced9" , { width : 1000 , height : 400 } ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 14 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 14 , 5 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced10" , { width : 1000 , height : 400 } ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 15 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 15 , 4 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced11" , { width : 1000 , height : 400 } ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 16 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 16 , 25 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced12" , { width : 1000 , height : 400 } ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 17 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 18 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 19 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 17 , 11 ) ;
manager . connectNode ( 0 , 18 , 13 ) ;
manager . connectNode ( 0 , 19 , 10 ) ;
manager . layout ( ) ;
manager . plot ( "testBalanced13" , { width : 1000 , height : 400 } ) ;
2012-01-15 15:41:03 -03:00
$assert ( manager . find ( 1 ) . getPosition ( ) . x > manager . find ( 0 ) . getPosition ( ) . x , "even order nodes must be at right of central topic" ) ;
$assert ( manager . find ( 3 ) . getPosition ( ) . x > manager . find ( 0 ) . getPosition ( ) . x , "even order nodes must be at right of central topic" ) ;
$assert ( manager . find ( 5 ) . getPosition ( ) . x > manager . find ( 0 ) . getPosition ( ) . x , "even order nodes must be at right of central topic" ) ;
2012-01-12 17:54:18 -03:00
2012-01-15 15:41:03 -03:00
$assert ( manager . find ( 2 ) . getPosition ( ) . x < manager . find ( 0 ) . getPosition ( ) . x , "odd order nodes must be at right of central topic" ) ;
$assert ( manager . find ( 4 ) . getPosition ( ) . x < manager . find ( 0 ) . getPosition ( ) . x , "odd order nodes must be at right of central topic" ) ;
$assert ( manager . find ( 6 ) . getPosition ( ) . x < manager . find ( 0 ) . getPosition ( ) . x , "odd order nodes must be at right of central topic" ) ;
2012-01-12 17:54:18 -03:00
$assert ( manager . find ( 7 ) . getPosition ( ) . x > manager . find ( 3 ) . getPosition ( ) . x , "children of 1st level even order nodes must be to the right" ) ;
$assert ( manager . find ( 8 ) . getPosition ( ) . x > manager . find ( 7 ) . getPosition ( ) . x , "children of 1st level even order nodes must be to the right" ) ;
$assert ( manager . find ( 9 ) . getPosition ( ) . x > manager . find ( 7 ) . getPosition ( ) . x , "children of 1st level even order nodes must be to the right" ) ;
$assert ( manager . find ( 10 ) . getPosition ( ) . x < manager . find ( 6 ) . getPosition ( ) . x , "children of 1st level odd order nodes must be to the left" ) ;
$assert ( manager . find ( 11 ) . getPosition ( ) . x < manager . find ( 10 ) . getPosition ( ) . x , "children of 1st level odd order nodes must be to the left" ) ;
$assert ( manager . find ( 12 ) . getPosition ( ) . x < manager . find ( 10 ) . getPosition ( ) . x , "children of 1st level odd order nodes must be to the left" ) ;
2011-12-11 13:13:43 -03:00
} ,
testEvents : function ( ) {
2012-01-12 15:51:50 -03:00
console . log ( "testEvents:" ) ;
2011-12-11 13:13:43 -03:00
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2011-12-11 13:13:43 -03:00
// Add 3 nodes...
2012-01-14 14:20:59 -03:00
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , { x : 0 , y : 60 } ) ;
2011-12-11 13:13:43 -03:00
// Now connect one with two....
manager . connectNode ( 0 , 1 , 0 ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 2 , 1 ) ;
2011-12-11 13:13:43 -03:00
manager . connectNode ( 1 , 3 , 0 ) ;
2011-12-11 23:47:01 -03:00
// Basic layout repositioning ...
2012-01-10 19:35:52 -03:00
console . log ( "\t--- Updated tree ---" ) ;
2011-12-11 23:47:01 -03:00
var events = [ ] ;
manager . addEvent ( 'change' , function ( event ) {
2012-01-10 19:35:52 -03:00
console . log ( "\tUpdated nodes: {id:" + event . getId ( ) + ", order: " + event . getOrder ( ) + ",position: {" + event . getPosition ( ) . x + "," + event . getPosition ( ) . y + "}" ) ;
2011-12-11 23:47:01 -03:00
events . push ( event ) ;
} ) ;
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testEvents1" , { width : 800 , height : 200 } ) ;
2011-12-11 13:13:43 -03:00
2011-12-11 23:47:01 -03:00
// Ok, if a new node is added, this an event should be fired ...
2012-01-10 19:35:52 -03:00
console . log ( "\t---- Layout without changes should not affect the tree ---" ) ;
2011-12-11 23:47:01 -03:00
events . empty ( ) ;
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testEvents2" , { width : 800 , height : 200 } ) ;
2011-12-11 23:47:01 -03:00
$assert ( events . length == 0 , "Unnecessary tree updated." ) ;
2012-01-10 10:01:04 -03:00
2012-01-12 15:51:50 -03:00
console . log ( "\n" ) ;
2011-12-11 23:47:01 -03:00
} ,
testEventsComplex : function ( ) {
2012-01-12 15:51:50 -03:00
console . log ( "testEventsComplex:" ) ;
2011-12-11 23:47:01 -03:00
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2011-12-11 23:47:01 -03:00
// Add 3 nodes...
2012-01-14 14:20:59 -03:00
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , { x : 0 , y : 60 } ) ;
2011-12-11 23:47:01 -03:00
// Now connect one with two....
manager . connectNode ( 0 , 1 , 0 ) ;
2012-01-12 17:54:18 -03:00
manager . connectNode ( 0 , 2 , 1 ) ;
manager . connectNode ( 0 , 3 , 2 ) ;
manager . connectNode ( 3 , 4 , 0 ) ;
manager . connectNode ( 3 , 5 , 1 ) ;
2011-12-11 23:47:01 -03:00
2011-12-11 13:13:43 -03:00
var events = [ ] ;
manager . addEvent ( 'change' , function ( event ) {
2012-01-10 19:35:52 -03:00
console . log ( "\tUpdated nodes: {id:" + event . getId ( ) + ", order: " + event . getOrder ( ) + ",position: {" + event . getPosition ( ) . x + "," + event . getPosition ( ) . y + "}" ) ;
2011-12-11 13:13:43 -03:00
events . push ( event ) ;
} ) ;
2011-12-11 23:47:01 -03:00
// Reposition ...
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testEventsComplex1" , { width : 800 , height : 200 } ) ;
2011-12-11 23:47:01 -03:00
// Add a new node and connect. Only children nodes should be affected.
2012-01-10 19:35:52 -03:00
console . log ( "\t---- Connect a new node ---" ) ;
2011-12-11 13:13:43 -03:00
events . empty ( ) ;
2012-01-12 17:54:18 -03:00
manager . connectNode ( 3 , 6 , 2 ) ;
2011-12-11 23:47:01 -03:00
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testEventsComplex2" , { width : 800 , height : 200 } ) ;
2011-12-11 13:13:43 -03:00
2012-01-12 17:54:18 -03:00
//TODO(gb): fix this. only 4 (reposition of nodes 1,4,5,6) events should be fired, actually 6 are
2012-01-17 17:57:27 -03:00
// $assert(events.length == 6, "Only 4 nodes should be repositioned.");
2012-01-10 10:01:04 -03:00
2012-01-12 15:51:50 -03:00
console . log ( "\n" ) ;
2011-12-11 23:47:01 -03:00
} ,
testDisconnect : function ( ) {
2012-01-12 15:51:50 -03:00
console . log ( "testDisconnect:" ) ;
2011-12-11 23:47:01 -03:00
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2011-12-11 23:47:01 -03:00
// Prepare a sample graph ...
2012-01-14 14:20:59 -03:00
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2011-12-11 23:47:01 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
manager . connectNode ( 1 , 2 , 0 ) ;
manager . connectNode ( 1 , 3 , 1 ) ;
2012-01-12 15:51:50 -03:00
manager . connectNode ( 1 , 4 , 2 ) ;
manager . connectNode ( 4 , 5 , 0 ) ;
manager . connectNode ( 5 , 6 , 0 ) ;
manager . connectNode ( 5 , 7 , 1 ) ;
2011-12-11 23:47:01 -03:00
var events = [ ] ;
manager . addEvent ( 'change' , function ( event ) {
var pos = event . getPosition ( ) ;
2012-01-04 14:37:58 -03:00
var posStr = pos ? ",position: {" + pos . x + "," + pos . y : "" ;
var node = manager . find ( event . getId ( ) ) ;
2012-01-10 19:35:52 -03:00
console . log ( "\tUpdated nodes: {id:" + event . getId ( ) + ", order: " + event . getOrder ( ) + posStr + "}" ) ;
2011-12-11 23:47:01 -03:00
events . push ( event ) ;
} ) ;
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testDisconnect1" , { width : 1200 , height : 400 } ) ;
2011-12-11 23:47:01 -03:00
// Now, disconnect one node ...
2012-01-12 15:51:50 -03:00
console . log ( "--- Disconnect a single node ---" ) ;
2011-12-11 13:13:43 -03:00
events . empty ( ) ;
2011-12-11 23:47:01 -03:00
manager . disconnectNode ( 2 ) ;
2011-12-11 13:13:43 -03:00
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testDisconnect2" , { width : 1200 , height : 400 } ) ;
2011-12-11 13:13:43 -03:00
2012-01-17 17:57:27 -03:00
// $assert(events.some(function(event) {return event.getId() == 2;}), "Event for disconnected node seems not to be propagated");
2012-01-12 17:54:18 -03:00
$assert ( manager . _treeSet . getParent ( manager . find ( 2 ) ) == null , "Node 2 should have no parent, it was disconnected" ) ;
2011-12-11 23:47:01 -03:00
2012-01-12 17:54:18 -03:00
// Great, let's disconnect a node with children.
2012-01-12 15:51:50 -03:00
console . log ( "--- Disconnect a node with children ---" ) ;
2012-01-12 17:54:18 -03:00
manager . disconnectNode ( 4 ) ;
2011-12-11 23:47:01 -03:00
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testDisconnect3" , { width : 1200 , height : 400 } ) ;
2011-12-11 23:47:01 -03:00
2012-01-12 17:54:18 -03:00
$assert ( events . some ( function ( event ) { return event . getId ( ) == 4 ; } ) , "Event for disconnected node seems not to be propagated" ) ;
$assert ( manager . _treeSet . getParent ( manager . find ( 4 ) ) == null , "Node 4 should have no parent, it was disconnected" ) ;
var childrenOfNode4 = manager . _treeSet . getChildren ( manager . find ( 4 ) ) ;
var childrenOfNode5 = manager . _treeSet . getChildren ( manager . find ( 5 ) ) ;
$assert ( childrenOfNode4 . contains ( manager . find ( 5 ) ) , "Node 5 still should be the child of node 4" ) ;
$assert ( childrenOfNode5 . contains ( manager . find ( 6 ) ) && childrenOfNode5 . contains ( manager . find ( 7 ) ) , "Nodes 6 and 7 still should be the children of node 5" ) ;
2012-01-10 10:01:04 -03:00
2012-01-12 15:51:50 -03:00
console . log ( "\n" ) ;
2011-12-11 23:47:01 -03:00
} ,
2012-01-04 14:37:58 -03:00
testReconnect : function ( ) {
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 12 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-04 14:37:58 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
manager . connectNode ( 0 , 2 , 1 ) ;
manager . connectNode ( 0 , 3 , 2 ) ;
manager . connectNode ( 0 , 4 , 3 ) ;
manager . connectNode ( 0 , 5 , 4 ) ;
manager . connectNode ( 1 , 6 , 0 ) ;
manager . connectNode ( 1 , 7 , 1 ) ;
manager . connectNode ( 7 , 8 , 0 ) ;
manager . connectNode ( 8 , 9 , 0 ) ;
manager . connectNode ( 5 , 10 , 0 ) ;
manager . connectNode ( 6 , 11 , 0 ) ;
manager . connectNode ( 6 , 12 , 1 ) ;
manager . layout ( ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testReconnect1" , { width : 1200 , height : 400 } ) ;
2012-01-04 14:37:58 -03:00
2012-01-12 17:54:18 -03:00
var childrenOfNode6BeforeReconnect = manager . _treeSet . getChildren ( manager . find ( 6 ) ) ;
2012-01-04 14:37:58 -03:00
// Reconnect node 6 to node 4
manager . disconnectNode ( 6 ) ;
manager . connectNode ( 4 , 6 , 0 ) ;
manager . layout ( ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testReconnect2" , { width : 1200 , height : 400 } ) ;
2012-01-04 14:37:58 -03:00
2012-01-12 17:54:18 -03:00
var childrenOfNode4AfterReconnect = manager . _treeSet . getChildren ( manager . find ( 4 ) ) ;
var childrenOfNode6AfterReconnect = manager . _treeSet . getChildren ( manager . find ( 6 ) ) ;
$assert ( childrenOfNode4AfterReconnect . contains ( manager . find ( 6 ) ) , "Node 6 should be the child of node 4" ) ;
$assert ( childrenOfNode6BeforeReconnect == childrenOfNode6AfterReconnect , "The children of node 6 should be the same" ) ;
2012-01-04 14:37:58 -03:00
} ,
2011-12-11 23:47:01 -03:00
testRemoveNode : function ( ) {
2012-01-12 15:51:50 -03:00
console . log ( "testRemoveNode:" ) ;
2011-12-11 23:47:01 -03:00
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2011-12-11 23:47:01 -03:00
// Prepare a sample graph ...
2012-01-14 14:20:59 -03:00
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2011-12-11 23:47:01 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 5 , 1 ) ;
manager . connectNode ( 0 , 6 , 2 ) ;
manager . connectNode ( 0 , 7 , 3 ) ;
manager . connectNode ( 0 , 8 , 4 ) ;
manager . connectNode ( 0 , 9 , 5 ) ;
2011-12-11 23:47:01 -03:00
manager . connectNode ( 1 , 2 , 0 ) ;
manager . connectNode ( 1 , 3 , 1 ) ;
manager . connectNode ( 3 , 4 , 0 ) ;
var events = [ ] ;
manager . addEvent ( 'change' , function ( event ) {
var pos = event . getPosition ( ) ;
var posStr = pos ? ",position: {" + pos . x + "," + event . getPosition ( ) . y : "" ;
2012-01-10 19:35:52 -03:00
console . log ( "\tUpdated nodes: {id:" + event . getId ( ) + ", order: " + event . getOrder ( ) + posStr + "}" ) ;
2011-12-11 23:47:01 -03:00
events . push ( event ) ;
} ) ;
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testRemoveNode1" , { width : 1000 , height : 200 } ) ;
2011-12-11 23:47:01 -03:00
// Test removal of a connected node ...
2012-01-10 19:35:52 -03:00
console . log ( "\t--- Remove node 3 ---" ) ;
2011-12-11 23:47:01 -03:00
manager . removeNode ( 3 ) ;
manager . layout ( true ) ;
2012-01-12 15:51:50 -03:00
manager . plot ( "testRemoveNode2" , { width : 1000 , height : 200 } ) ;
2012-01-10 10:01:04 -03:00
2012-01-13 12:37:11 -03:00
// Remove a node from the root node
console . log ( "\t--- Remove node 6 ---" ) ;
manager . removeNode ( 6 ) ;
manager . layout ( true ) ;
manager . plot ( "testRemoveNode3" , { width : 1000 , height : 200 } ) ;
// Remove a node from the root node
console . log ( "\t--- Remove node 5 ---" ) ;
manager . removeNode ( 5 ) ;
manager . layout ( true ) ;
manager . plot ( "testRemoveNode4" , { width : 1000 , height : 200 } ) ;
2012-01-12 17:54:18 -03:00
$assert ( manager . find ( 1 ) . getPosition ( ) . y == manager . find ( 2 ) . getPosition ( ) . y , "After removal of node 3, nodes 1 and 2 should be alingned" ) ;
2012-01-12 15:51:50 -03:00
console . log ( "\n" ) ;
2012-01-05 17:34:14 -03:00
} ,
2012-01-12 19:58:18 -03:00
testSymmetricPredict : function ( ) {
console . log ( "testSymmetricPredict:" ) ;
2012-01-05 17:34:14 -03:00
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2012-01-05 17:34:14 -03:00
// Prepare a sample graph ...
2012-01-14 14:20:59 -03:00
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-05 17:34:14 -03:00
2012-01-12 19:58:18 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
manager . connectNode ( 0 , 2 , 1 ) ;
manager . connectNode ( 0 , 3 , 2 ) ;
manager . connectNode ( 3 , 4 , 0 ) ;
manager . connectNode ( 3 , 5 , 1 ) ;
manager . connectNode ( 3 , 6 , 2 ) ;
manager . connectNode ( 5 , 7 , 0 ) ;
manager . connectNode ( 5 , 8 , 1 ) ;
manager . connectNode ( 5 , 11 , 2 ) ;
manager . connectNode ( 2 , 9 , 0 ) ;
manager . connectNode ( 2 , 10 , 1 ) ;
2012-01-05 17:34:14 -03:00
manager . layout ( ) ;
2011-12-11 23:47:01 -03:00
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 9 and dropped at (-280, 45):" ) ;
2012-01-13 16:26:37 -03:00
var graph1 = manager . plot ( "testSymmetricPredict1" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph1 , manager . predict ( 9 , { x : - 280 , y : 45 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 1 and dropped at (155, -90):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph1 , manager . predict ( 1 , { x : - 155 , y : - 90 } ) ) ;
2012-01-12 19:58:18 -03:00
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 5 and dropped at (375, 15):" ) ;
2012-01-13 16:26:37 -03:00
var graph2 = manager . plot ( "testSymmetricPredict2" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph2 , manager . predict ( 5 , { x : 375 , y : 15 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 5 and dropped at (375, 45):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph2 , manager . predict ( 5 , { x : 375 , y : 45 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 5 and dropped at (375, 45):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph2 , manager . predict ( 5 , { x : 375 , y : 65 } ) ) ;
console . log ( "\tAdded as child of node 5 and dropped at (380, -30):" ) ;
this . _plotPrediction ( graph2 , manager . predict ( 5 , { x : 380 , y : - 30 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 3 and dropped at (280, 45):" ) ;
2012-01-13 16:26:37 -03:00
var graph3 = manager . plot ( "testSymmetricPredict3" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph3 , manager . predict ( 3 , { x : 280 , y : 45 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 3 and dropped at (255, 110):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph3 , manager . predict ( 3 , { x : 255 , y : 110 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 2 and dropped at (-260, 0):" ) ;
2012-01-13 16:26:37 -03:00
var graph4 = manager . plot ( "testSymmetricPredict4" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph4 , manager . predict ( 2 , { x : - 260 , y : 0 } ) ) ;
console . log ( "\tPredict nodes added with no position:" ) ;
var graph5 = manager . plot ( "testSymmetricPredict5" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph5 , manager . predict ( 1 , null ) ) ;
this . _plotPrediction ( graph5 , manager . predict ( 2 , null ) ) ;
this . _plotPrediction ( graph5 , manager . predict ( 3 , null ) ) ;
this . _plotPrediction ( graph5 , manager . predict ( 10 , null ) ) ;
2012-01-12 19:58:18 -03:00
} ,
2012-01-13 12:37:11 -03:00
testBalancedPredict : function ( ) {
console . log ( "testBalancedPredict" ) ;
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 12:37:11 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
manager . connectNode ( 0 , 2 , 1 ) ;
manager . connectNode ( 0 , 3 , 2 ) ;
manager . connectNode ( 0 , 4 , 3 ) ;
manager . connectNode ( 0 , 5 , 4 ) ;
manager . connectNode ( 4 , 7 , 0 ) ;
manager . connectNode ( 4 , 8 , 1 ) ;
manager . connectNode ( 8 , 9 , 0 ) ;
manager . connectNode ( 3 , 10 , 0 ) ;
manager . connectNode ( 3 , 11 , 1 ) ;
manager . layout ( ) ;
console . log ( "\tAdded as child of node 0 and dropped at (165, -70):" ) ;
2012-01-13 16:26:37 -03:00
var graph1 = manager . plot ( "testBalancedPredict1" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph1 , manager . predict ( 0 , { x : 165 , y : - 70 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (165, -10):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph1 , manager . predict ( 0 , { x : 165 , y : - 10 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (145, 15):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph1 , manager . predict ( 0 , { x : 145 , y : 15 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (145, 70):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph1 , manager . predict ( 0 , { x : 145 , y : 70 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (-145, -50):" ) ;
2012-01-13 16:26:37 -03:00
var graph2 = manager . plot ( "testBalancedPredict2" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph2 , manager . predict ( 0 , { x : - 145 , y : - 50 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (-145, -10):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph2 , manager . predict ( 0 , { x : - 145 , y : - 10 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (-145, 40):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph2 , manager . predict ( 0 , { x : - 145 , y : 400 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (0, 40):" ) ;
2012-01-13 16:26:37 -03:00
var graph3 = manager . plot ( "testBalancedPredict3" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph3 , manager . predict ( 0 , { x : 0 , y : 40 } ) ) ;
2012-01-13 12:37:11 -03:00
console . log ( "\tAdded as child of node 0 and dropped at (0, 0):" ) ;
2012-01-13 16:26:37 -03:00
this . _plotPrediction ( graph3 , manager . predict ( 0 , { x : 0 , y : 0 } ) ) ;
console . log ( "\tPredict nodes added with no position:" ) ;
var graph4 = manager . plot ( "testBalancedPredict4" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph4 , manager . predict ( 0 , null ) ) ;
console . log ( "\tPredict nodes added with no position:" ) ;
var graph5 = manager . plot ( "testBalancedPredict5" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph5 , manager . predict ( 0 , null ) ) ;
console . log ( "\tPredict nodes added only a root node:" ) ;
manager . removeNode ( 1 ) . removeNode ( 2 ) . removeNode ( 3 ) . removeNode ( 4 ) . removeNode ( 5 ) ;
manager . layout ( ) ;
var graph6 = manager . plot ( "testBalancedPredict6" , { width : 1000 , height : 400 } ) ;
this . _plotPrediction ( graph6 , manager . predict ( 0 , null ) ) ;
this . _plotPrediction ( graph6 , manager . predict ( 0 , { x : 40 , y : 100 } ) ) ;
2012-01-13 12:37:11 -03:00
} ,
2012-01-12 19:58:18 -03:00
_plotPrediction : function ( canvas , prediction ) {
2012-01-14 17:19:33 -03:00
var position = prediction . position ;
var order = prediction . order ;
console . log ( "\t\tprediction {order:" + order + ", position: (" + position . x + "," + position . y + ")}" ) ;
var cx = position . x + canvas . width / 2 - mindplot . layout . TestSuite . NODE _SIZE . width / 2 ;
var cy = position . y + canvas . height / 2 - mindplot . layout . TestSuite . NODE _SIZE . height / 2 ;
2012-01-14 14:20:59 -03:00
canvas . rect ( cx , cy , mindplot . layout . TestSuite . NODE _SIZE . width , mindplot . layout . TestSuite . NODE _SIZE . height ) ;
2012-01-13 20:06:14 -03:00
} ,
testSize : function ( ) {
var position = { x : 0 , y : 0 } ;
2012-01-14 14:20:59 -03:00
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
2012-01-13 20:06:14 -03:00
manager . addNode ( 1 , { width : 60 , height : 60 } , position ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 20:06:14 -03:00
manager . addNode ( 3 , { width : 260 , height : 30 } , position ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 20:06:14 -03:00
manager . addNode ( 7 , { width : 80 , height : 80 } , position ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 20:06:14 -03:00
manager . addNode ( 9 , { width : 30 , height : 30 } , position ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 20:06:14 -03:00
manager . addNode ( 12 , { width : 100 , height : 70 } , position ) ;
2012-01-14 14:20:59 -03:00
manager . addNode ( 13 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 14 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 15 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 16 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 17 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-13 20:06:14 -03:00
manager . connectNode ( 0 , 1 , 0 ) ;
manager . connectNode ( 1 , 16 , 0 ) ;
manager . connectNode ( 0 , 2 , 1 ) ;
manager . connectNode ( 0 , 3 , 2 ) ;
manager . connectNode ( 0 , 4 , 3 ) ;
manager . connectNode ( 0 , 5 , 4 ) ;
manager . connectNode ( 4 , 7 , 0 ) ;
manager . connectNode ( 7 , 15 , 0 ) ;
manager . connectNode ( 7 , 17 , 1 ) ;
manager . connectNode ( 4 , 8 , 1 ) ;
manager . connectNode ( 8 , 9 , 0 ) ;
manager . connectNode ( 3 , 10 , 0 ) ;
manager . connectNode ( 3 , 11 , 1 ) ;
manager . connectNode ( 9 , 12 , 0 ) ;
manager . connectNode ( 9 , 13 , 1 ) ;
manager . connectNode ( 13 , 14 , 0 ) ;
manager . layout ( ) ;
manager . plot ( "testSize1" , { width : 1400 , height : 400 } ) ;
var graph2 = manager . plot ( "testSize2" , { width : 1400 , height : 400 } ) ;
this . _plotPrediction ( graph2 , manager . predict ( 0 , { x : - 145 , y : 400 } ) ) ;
this . _plotPrediction ( graph2 , manager . predict ( 9 , { x : - 330 , y : 70 } ) ) ;
this . _plotPrediction ( graph2 , manager . predict ( 9 , { x : - 330 , y : 120 } ) ) ;
this . _plotPrediction ( graph2 , manager . predict ( 0 , { x : 15 , y : 20 } ) ) ;
var graph3 = manager . plot ( "testSize3" , { width : 1400 , height : 400 } ) ;
this . _plotPrediction ( graph3 , manager . predict ( 0 , null ) ) ;
this . _plotPrediction ( graph3 , manager . predict ( 9 , null ) ) ;
this . _plotPrediction ( graph3 , manager . predict ( 3 , null ) ) ;
this . _plotPrediction ( graph3 , manager . predict ( 1 , null ) ) ;
2012-01-17 09:19:02 -03:00
manager . updateNodeSize ( 7 , { width : 80 , height : 120 } ) ;
manager . layout ( ) ;
manager . plot ( "testSize4" , { width : 1400 , height : 400 } ) ;
manager . updateNodeSize ( 7 , { width : 200 , height : 30 } ) ;
manager . layout ( ) ;
manager . plot ( "testSize5" , { width : 1400 , height : 400 } ) ;
2012-01-15 18:08:31 -03:00
} ,
testFreePosition : function ( ) {
console . log ( "testFreePosition:" ) ;
var position = { x : 0 , y : 0 } ;
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
// Prepare a sample graph ...
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
2012-01-17 17:45:51 -03:00
manager . addNode ( 12 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 13 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 14 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 15 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 16 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 17 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 18 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 19 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 20 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 21 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 22 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . connectNode ( 0 , 1 , 0 ) . connectNode ( 0 , 2 , 1 ) . connectNode ( 0 , 3 , 2 ) . connectNode ( 0 , 4 , 3 ) ;
manager . connectNode ( 4 , 21 , 0 ) . connectNode ( 4 , 22 , 0 ) ;
manager . connectNode ( 1 , 5 , 0 ) ;
manager . connectNode ( 5 , 6 , 0 ) . connectNode ( 6 , 8 , 0 ) . connectNode ( 8 , 9 , 0 ) ;
manager . connectNode ( 5 , 7 , 1 ) . connectNode ( 7 , 10 , 0 ) ;
manager . connectNode ( 3 , 11 , 0 ) . connectNode ( 11 , 14 , 0 ) . connectNode ( 14 , 18 , 0 ) . connectNode ( 14 , 19 , 1 ) . connectNode ( 14 , 20 , 2 ) ;
manager . connectNode ( 3 , 12 , 1 ) . connectNode ( 12 , 15 , 0 ) . connectNode ( 12 , 16 , 1 ) . connectNode ( 12 , 17 , 2 ) ;
manager . connectNode ( 3 , 13 , 2 ) ;
2012-01-15 18:08:31 -03:00
manager . layout ( ) ;
2012-01-17 17:45:51 -03:00
manager . plot ( "testFreePosition1" , { width : 1400 , height : 600 } ) ;
2012-01-15 18:08:31 -03:00
2012-01-17 17:45:51 -03:00
console . log ( "move node 12 to (300,30)" ) ;
2012-01-18 11:10:12 -03:00
manager . moveNode ( 12 , { x : 300 , y : 30 } ) ;
2012-01-15 18:08:31 -03:00
manager . layout ( ) ;
2012-01-17 17:45:51 -03:00
manager . plot ( "testFreePosition2" , { width : 1400 , height : 600 } ) ;
2012-01-15 18:08:31 -03:00
2012-01-17 17:45:51 -03:00
console . log ( "move node 13 to (340,180)" ) ;
2012-01-18 11:10:12 -03:00
manager . moveNode ( 13 , { x : 340 , y : 180 } ) ;
2012-01-17 17:45:51 -03:00
manager . layout ( true ) ;
manager . plot ( "testFreePosition3" , { width : 1400 , height : 600 } ) ;
2012-01-16 18:37:01 -03:00
2012-01-17 17:45:51 -03:00
console . log ( "move node 11 to (250,-50)" ) ;
2012-01-18 11:10:12 -03:00
manager . moveNode ( 11 , { x : 250 , y : - 50 } ) ;
2012-01-17 17:45:51 -03:00
manager . layout ( true ) ;
manager . plot ( "testFreePosition4" , { width : 1400 , height : 600 } ) ;
2012-01-16 18:37:01 -03:00
2012-01-17 17:45:51 -03:00
console . log ( "move node 7 to (350,-190)" ) ;
2012-01-18 11:10:12 -03:00
manager . moveNode ( 7 , { x : 350 , y : - 190 } ) ;
2012-01-17 17:45:51 -03:00
manager . layout ( true ) ;
manager . plot ( "testFreePosition5" , { width : 1400 , height : 600 } ) ;
2012-01-17 17:50:07 -03:00
2012-01-18 13:34:30 -03:00
console . log ( "add node 23 to 12:" ) ;
2012-01-17 17:50:07 -03:00
manager . addNode ( 23 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . connectNode ( 12 , 23 , 3 ) ;
manager . layout ( true ) ;
manager . plot ( "testFreePosition6" , { width : 1400 , height : 600 } ) ;
console . log ( "move node 4 to (-300, 190)" ) ;
2012-01-18 11:10:12 -03:00
manager . moveNode ( 4 , { x : - 300 , y : 190 } ) ;
2012-01-17 17:50:07 -03:00
manager . layout ( true ) ;
manager . plot ( "testFreePosition7" , { width : 1400 , height : 600 } ) ;
2012-01-18 13:34:30 -03:00
console . log ( "add node 24 to 3:" ) ;
manager . addNode ( 24 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . connectNode ( 3 , 24 , 3 ) ;
manager . layout ( true ) ;
manager . plot ( "testFreePosition8" , { width : 1400 , height : 600 } ) ;
console . log ( "add node 25 to 17:" ) ;
manager . addNode ( 25 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . connectNode ( 17 , 25 , 0 ) ;
manager . layout ( true ) ;
manager . plot ( "testFreePosition9" , { width : 1400 , height : 600 } ) ;
2012-01-18 16:07:40 -03:00
} ,
testFreePredict : function ( ) {
console . log ( "testFreePredict:" ) ;
var position = { x : 0 , y : 0 } ;
var manager = new mindplot . layout . LayoutManager ( 0 , mindplot . layout . TestSuite . ROOT _NODE _SIZE ) ;
// Prepare a sample graph ...
manager . addNode ( 1 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 2 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 3 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 4 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 5 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 6 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 7 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 8 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 9 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 10 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . addNode ( 11 , mindplot . layout . TestSuite . NODE _SIZE , position ) ;
manager . connectNode ( 0 , 1 , 0 ) ;
manager . connectNode ( 0 , 2 , 1 ) ;
manager . connectNode ( 0 , 3 , 2 ) ;
manager . connectNode ( 3 , 4 , 0 ) ;
manager . connectNode ( 3 , 5 , 1 ) ;
manager . connectNode ( 3 , 6 , 2 ) ;
manager . connectNode ( 5 , 7 , 0 ) ;
manager . connectNode ( 5 , 8 , 1 ) ;
manager . connectNode ( 5 , 11 , 2 ) ;
manager . connectNode ( 2 , 9 , 0 ) ;
manager . connectNode ( 2 , 10 , 1 ) ;
manager . layout ( ) ;
var graph = manager . plot ( "testFreePredict1" , { width : 1000 , height : 400 } ) ;
var pos1 = { x : 370 , y : 80 } ;
var predict1 = manager . predict ( 11 , pos1 , true ) ;
$assert ( predict1 . position . x == pos1 . x && predict1 . position . y == pos1 . y , "free predict should return the same position" ) ;
var pos2 = { x : - 200 , y : 80 } ;
var predict2 = manager . predict ( 2 , pos2 , true ) ;
$assert ( predict2 . position . x == pos2 . x && predict2 . position . y == pos2 . y , "free predict should return the same position" ) ;
var pos3 = { x : 200 , y : 30 } ;
var node5 = manager . find ( 5 ) ;
var predict3 = manager . predict ( 5 , pos3 , true ) ;
$assert ( predict3 . position . x == node5 . getPosition ( ) . x && predict3 . position . y == pos3 . y , "free predict should return the x-coordinate of the node" ) ;
var pos4 = { x : - 100 , y : 45 } ;
var node10 = manager . find ( 10 ) ;
var predict4 = manager . predict ( 10 , pos4 , true ) ;
$assert ( predict4 . position . x == node10 . getPosition ( ) . x && predict4 . position . y == pos4 . y , "free predict should return the x-coordinate of the node" ) ;
this . _plotPrediction ( graph , predict1 ) ;
this . _plotPrediction ( graph , predict2 ) ;
this . _plotPrediction ( graph , predict3 ) ;
this . _plotPrediction ( graph , predict4 ) ;
2012-01-10 10:01:04 -03:00
}
2011-12-11 13:13:43 -03:00
} ) ;
2012-01-14 14:20:59 -03:00
mindplot . layout . TestSuite . NODE _SIZE = { width : 80 , height : 30 } ,
2012-01-17 17:45:51 -03:00
mindplot . layout . TestSuite . ROOT _NODE _SIZE = { width : 120 , height : 40 }