// Copyright 2006 The Closure Library Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // 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. goog.provide('goog.ds.ExprTest'); goog.setTestOnly('goog.ds.ExprTest'); goog.require('goog.ds.DataManager'); goog.require('goog.ds.Expr'); goog.require('goog.ds.JsDataSource'); goog.require('goog.testing.jsunit'); var jsDs; var jsObj = { Success: true, Errors: [], Body: { Contacts: [ {Name: 'John Doe', Email: 'john@gmail.com', EmailCount: 300}, {Name: 'Jane Doh', Email: 'jane@gmail.com'}, {Name: 'Steve Smith', Email: 'steve@gmail.com', EmailCount: 305}, {Name: 'John Smith', Email: 'smith@gmail.com'}, {Name: 'Homer Simpson', Email: 'homer@gmail.com'}, {Name: 'Bart Simpson', Email: 'bart@gmail.com'} ] } }; function setUp() { jsDs = new goog.ds.JsDataSource(jsObj, 'JS', null); var dm = goog.ds.DataManager.getInstance(); dm.addDataSource(jsDs, true); } function testBasicStuff() { assertNotNull('Get Body', goog.ds.Expr.create('$JS/Body').getNode()); } function testArrayExpressions() { assertEquals( 6, goog.ds.Expr.create('$JS/Body/Contacts/*').getNodes().getCount()); assertEquals( 'John Doe', goog.ds.Expr.create('$JS/Body/Contacts/[0]/Name').getValue()); assertEquals( 305, goog.ds.Expr.create('$JS/Body/Contacts/[2]/EmailCount').getValue()); assertEquals( 6, goog.ds.Expr.create('$JS/Body/Contacts/*/count()').getValue()); assertEquals(0, goog.ds.Expr.create('$JS/Errors/*/count()').getValue()); } function testCommonExpressions() { assertTrue(goog.ds.Expr.create('.').isCurrent_); assertFalse(goog.ds.Expr.create('Bob').isCurrent_); assertTrue(goog.ds.Expr.create('*|text()').isAllChildNodes_); assertFalse(goog.ds.Expr.create('Bob').isAllChildNodes_); assertTrue(goog.ds.Expr.create('@*').isAllAttributes_); assertFalse(goog.ds.Expr.create('Bob').isAllAttributes_); assertTrue(goog.ds.Expr.create('*').isAllElements_); assertFalse(goog.ds.Expr.create('Bob').isAllElements_); } function testIndexExpressions() { assertEquals(goog.ds.Expr.create('node/[5]').getNext().size_, 1); assertEquals(goog.ds.Expr.create('node/[5]').getNext().parts_[0], '[5]'); }