vadimtsushko avatar vadimtsushko committed 2b81e76

Refreshed unittest

Comments (0)

Files changed (32)

 third_party/dart-crypto-lib/test/vm/tests.dart
 third_party/dart-crypto-lib/src/hash.dart
 tests/bson/BSonTypesTest.dart
-third_party/testing/unittest/unittest_html.dart
-third_party/testing/unittest/unittest_dartest.dart
 examples/russian.dart
 tests/bson/allBsonTests.dart
 examples/blog.dart
 third_party/dart-crypto-lib/src/sha1.dart
+third_party/unittest/dom_config.dart
 tests/DbCollectionTest.dart
 third_party/log4dart/LogLib.dart
 tests/DbTest.dart
 tests/bson/BsonObjectIdTest.dart
 tests/objectory/ObjectoryImplWsTest.dart
+third_party/unittest/html_config.dart
 examples/simpleUpdate.dart
 third_party/dart-crypto-lib/src/md5.dart
 lib/objectory/ObjectoryLib_ws.dart
 tests/bson/BsonImplTest.dart
+third_party/unittest/vm_config.dart
 tests/bson/ClientTest/ClientTest.dart
-tests/objectory/ObjectoryBaseImplTest.dart
-third_party/testing/unittest/unittest_node.dart
+third_party/unittest/html_enhanced_config.dart
 tests/ConnectionTest.dart
 third_party/dart-crypto-lib/test/browser/test.dart
 third_party/log4dart/test/TestRunner.dart
-third_party/testing/unittest/unittest_dom.dart
+third_party/unittest/unittest.dart
 examples/raw_queries.dart
 lib/networking/logger.dart
-tests/objectory/AsyncException.dart
-third_party/testing/unittest/unittest_vm.dart
 lib/mongo.dart
 tests/objectory/ObjectoryImplVmTest.dart
 tests/bson/BsonBinaryTest.dart

lib/bson/binary.dart

     offset += 1;
   }
   int writeDouble(double value){    
-    byteList.setFloat64(offset, value);
+    byteArray.setFloat64(offset, value);
     offset+=8;
   } 
   int writeInt64(int value){    

lib/bson/bson_regexp.dart

     createOptionsString();    
     bsonPattern = new BsonCString(pattern,false);
     bsonOptions = new BsonCString(options,false);
-  }
-  
+  }  
   get value()=>this;
   int get typeByte() => BSON.BSON_DATA_REGEXP;  
   byteLength()=>bsonPattern.byteLength()+bsonOptions.byteLength();
     connection.execute(message);
   }    
   Future<bool> open(){
+//    print("opening db");
+    if (connection.connected){
+      connection.close();
+      connection = new Connection(serverConfig);
+    }
     return connection.connect();
   }
   Future<Map> executeDbCommand(MongoMessage message){
     return getLastError();
   }
   close(){
+//    print("closing db");
     connection.close();
   }
   

lib/helpers/SelectorBuilder.dart

     map[fieldName] = {"\$mod":[value,0]};
     return this;    
   }
-  SelectorBuilder match(String fieldName, String pattern,[bool multiLine, bool caseInsensitive, bool dotAll, bool extended]){    
+  SelectorBuilder match(String fieldName, String pattern,[bool multiLine, bool caseInsensitive, bool dotAll, bool extended]){        
     map[fieldName] = {'\$regex': new BsonRegexp(pattern,multiLine:multiLine, caseInsensitive:caseInsensitive,
         dotAll:dotAll,extended:extended)};
     return this;    

lib/networking/connection.dart

   Binary bufferToSend;
   Queue<MongoMessage> sendQueue;
   Binary messageBuffer;
-  Socket socket;  
+  Socket socket;
+  bool connected = false;
   Connection([this.serverConfig]){
     if (serverConfig === null){
       serverConfig = new ServerConfig();
         print("connect exception ${e}");
         completer.completeException(e);
       };
-      socket.onConnect = () {        
+      socket.onConnect = () {
+        connected = true;
         completer.complete(true);
       };
       return completer.future;

lib/objectory/Objectory.dart

-typedef PersistentObject FactoryMethod();
+typedef IPersistent FactoryMethod();
 class ClassSchema{
   static final SimpleProperty = 0;
   static final InternalObject = 1;
       properties.addAll(links.getKeys());
     }
   }    
-  void property(String propertyName, String className, [int type = SimpleProperty]){
+  void property(String propertyName, String propertyClass){
     
   }
 }
 interface Objectory{  
   void registerClass(ClassSchema schema);
-  PersistentObject newInstance(String className);
-  PersistentObject map2Object(String className, Map map);  
-  Future<PersistentObject> findOne(String className,[Map selector]);
-  Future<List<PersistentObject>> find(String className,[Map selector]);
-  void save(PersistentObject persistentObject);
-  void remove(PersistentObject persistentObject);
+  IPersistent newInstance(String className);
+  IPersistent map2Object(String className, Map map);  
+  Future<IPersistent> findOne(String className,[Map selector]);
+  Future<List<IPersistent>> find(String className,[Map selector]);
+  void save(IPersistent persistentObject);
+  void remove(IPersistent persistentObject);
   Future<bool> open([String database, String url]);
   Future<bool> dropDb();
   ClassSchema getSchema(String className);
   ClassSchema getSchema(String className){
     return schemata[className];
   }
-  PersistentObject newInstance(String className){
+  IPersistent newInstance(String className){
     if (schemata.containsKey(className)){
       return schemata[className].factoryMethod();
     }
     throw "Class $className have not been registered in Objectory";
   }
-  PersistentObject map2Object(String className, Map map){
+  IPersistent map2Object(String className, Map map){
     var result = newInstance(className);
     result.map = map;
     if (result.isRoot()){
     ClassSchema classSchema = schemata[className];
     if (classSchema.components !== null){      
       classSchema.components.forEach((property,componentClass){
-        PersistentObject component = map2Object(componentClass,map[property]);
+        IPersistent component = map2Object(componentClass,map[property]);
         result.setProperty(property,component);
         result.clearDirtyStatus();
       });

lib/objectory/ObjectoryDirectConnectionImpl.dart

   ObjectoryDirectConnectionImpl._internal():super._internal();
   Db db;
   Future<bool> open([String database, String url]){
+    if (db !== null){
+      db.close();
+    }
     db = new Db(database);
     return db.open();
   }
     }
     db.collection(persistentObject.type).remove({"_id":persistentObject.id});
   }
-  Future<List<PersistentObject>> find(String className,[Map selector]){
+  Future<List<IPersistent>> find(String className,[Map selector]){
     Completer completer = new Completer();
-    List<PersistentObject> result = new List<PersistentObject>();
+    List<IPersistent> result = new List<IPersistent>();
     db.collection(className)
       .find(selector)
       .each((map){
       }).then((_) => completer.complete(result));
     return completer.future;  
   }
-  Future<PersistentObject> findOne(String className,[Map selector]){
+  Future<IPersistent> findOne(String className,[Map selector]){
     Completer completer = new Completer();    
     db.collection(className)
       .findOne(selector)
       .then((map){              
-        PersistentObject obj = objectory.map2Object(className,map);
+        IPersistent obj = objectory.map2Object(className,map);
         completer.complete(obj);
       });
     return completer.future;  

lib/objectory/PersistentObject.dart

 // noSuchMethod() borrowed from Chris Buckett (chrisbuckett@gmail.com)
 // http://github.com/chrisbu/dartwatch-JsonObject
-interface PersistentObject{
+interface IPersistent{  
   noSuchMethod(String function_name, List args);
   void setProperty(String property, value);
   void init();
   String get type();
   void clearDirtyStatus();
+  bool isDirty();
   Future fetchLink(String property);
   Future fetchLinks();
   bool isRoot();
   Map map;
 }
-abstract class PersistentObjectBase extends MapProxy implements PersistentObject{  
+/*interface IPersistentRoot extends IPersistent{
+  var id;
+}
+interface IPersistentInner extends IPersistent{
+  IPersistent parent;
+  String pathToMe;  
+}
+*/
+abstract class PersistentObjectBase extends MapProxy implements IPersistent{  
   bool setupMode;
   Set<String> dirtyFields;
   PersistentObjectBase(){        
       }
       else {       
         print("Not registered property $property on for class $type");
+        print(schema.properties);
         super.noSuchMethod(function_name, args);
       }        
     }    
   void setProperty(String property, value){
     noSuchMethod('set:$property',[value]);
   }
-  Dynamic get(String property){
+  Dynamic getProperty(String property){
     return noSuchMethod('get:$property',[]);
   }  
   String toString()=>"$type($map)";
   void init(){}  
   abstract String get type();  
-  Future<PersistentObject> fetchLink(String property, [Map links]){
-    var completer = new Completer<PersistentObject>();
+  Future<IPersistent> fetchLink(String property, [Map links]){
+    var completer = new Completer<IPersistent>();
     if (links === null){
       links = objectory.getSchema(type).links;
     }          
    bool isRoot()=>true;
 }
 abstract class InnerPersistentObject extends PersistentObjectBase{
-  PersistentObject parent;
+  IPersistent parent;
   String pathToMe;
   bool isRoot()=>false;
 }

tests/ConnectionTest.dart

 #import("../lib/bson/bson.dart");
 #import("dart:io");
 #import('dart:builtin');
-#import('../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../third_party/unittest/unittest.dart');
 testPing(){
   Connection conn = new Connection();
   conn.connect();

tests/CursorTest.dart

 #import("../lib/mongo.dart");
 #import("dart:io");
 #import('dart:builtin');
-#import('../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../third_party/unittest/unittest.dart');
 testCursorCreation(){
   Db db = new Db('mongo-dart-test');
   DbCollection collection = db.collection('student');

tests/DbCollectionTest.dart

 #import("../lib/mongo.dart");
 #import("dart:io");
 #import("dart:builtin");
-#import('../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../third_party/unittest/unittest.dart');
 testCollectionCreation(){
   Db db = new Db('db');
   DbCollection collection = db.collection('student');

tests/DbCommandTest.dart

 #library("dbcommand");
 #import("../lib/mongo.dart");
-#import('../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../third_party/unittest/unittest.dart');
 testDbCommandCreation(){
   Db db = new Db('mongo-dart-test');
   DbCommand dbCommand = new DbCommand(db,"student",0,0,1,{},{});

tests/DbTest.dart

 #library("dbtest");
 #import("../lib/mongo.dart");
 #import('dart:builtin');
-#import('../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../third_party/unittest/unittest.dart');
+//#import('package:unittest/unittest.dart');
 testDatabaseName(){
   Db db = new Db('mongo-dart-test');
   String dbName;

tests/SelectorBuilderTest.dart

 #import("../lib/bson/bson.dart");
 #import("dart:io");
 #import("dart:builtin");
-#import('../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../third_party/unittest/unittest.dart');
 testSelectorBuilderCreation(){
   SelectorBuilder selector = query();
   expect(selector is Map && selector.isEmpty()).isTrue();

tests/bson/BSonTypesTest.dart

 #library("BsonTypesTest");
-#import('../../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../../third_party/unittest/unittest.dart');
 #import("../../lib/bson/bson.dart");
 typeTest(){
   Expect.isTrue(bsonObjectFrom(1234) is BsonInt);

tests/bson/BsonBinaryTest.dart

 #library("bsonbinarytest");
-#import('../../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../../third_party/unittest/unittest.dart');
 #import("../../lib/bson/bson.dart");
 testUint8ListNegativeWrite(){
   Uint8List bl = new Uint8List(4);

tests/bson/BsonImplTest.dart

 #library("bsonimpltest");
-#import('../../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../../third_party/unittest/unittest.dart');
 #import("../../lib/bson/bson.dart");
 testSerializeDeserialize(){
   var bson = new BSON();
   buffer = bson.serialize(doc1);
   Expect.stringEquals('140000000461000c0000001030000f0000000000',buffer.toHexString());
   buffer.offset = 0;
+  
   root = bson.deserialize(buffer);  
   Expect.equals(15, root['a'][0]);
   doc1 = {'_id':5, 'a': [2,3,5]};    

tests/bson/BsonObjectIdTest.dart

 #library("BsonObjectId");
-#import('../../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../../third_party/unittest/unittest.dart');
 #import("../../lib/bson/bson.dart");
 testObjectId(){
   var id1 = new ObjectId();

tests/objectory/.children

 allObjectoryTests.dart
 ObjectoryImplVmTest.dart
-ObjectoryImplWsTest.dart
 PersistentObjectTest.dart

tests/objectory/DomainModel.dart

-interface IAuthor{
+interface Author extends IPersistent default ObjectoryFactory{
+  Author();
   String name;
   int age;
   String email;
 }
-interface IPerson{
+interface Person extends IPersistent default ObjectoryFactory{
+  Person();
   String firstName;
   String lastName;
   Date birthday;
   Person father;
   Person mother;
 }
-interface IAddress{
+interface Address extends IPersistent default ObjectoryFactory{
+  Address();
   String cityName;
   String zipcode;
   String streetName;
 }
 
 
-class Author extends RootPersistentObject implements IAuthor{  
+class AuthorImpl extends RootPersistentObject implements Author{  
   String get type()=>'Author';
   set name(String value){
     if (value is String){
     }      
     setProperty('name', value);
   }
+  String get name()=>getProperty('name');
 }
-class Person extends RootPersistentObject implements IPerson{  
+class PersonImpl extends RootPersistentObject implements Person{  
   String get type()=>"Person";
-  init(){    
+  init(){
     address = new Address();
+//    setProperty("address",new Address());
   }
 }  
-class Address extends InnerPersistentObject implements IAddress{  
+class AddressImpl extends InnerPersistentObject implements Address{  
   String get type()=>"Address";
 }
-
+class ObjectoryFactory{
+  factory Author()=>new AuthorImpl();
+  factory Person()=>new PersonImpl();
+  factory Address()=>new AddressImpl();
+}
 void registerClasses(){
   objectory.registerClass(new ClassSchema('Author',
       ()=>new Author(),
     ["firstName","lastName","birthday"],
     components: {"address": "Address"},
     links: {"father": "Person", "mother": "Person"}));
-}
+}
+final PERSON = 'Person';
+final AUTHOR = 'Author';
+final ADDRESS = 'Address';

tests/objectory/ObjectoryImplVmTest.dart

 #library("ObjectoryVM");
 #import("../../lib/objectory/ObjectoryLib_vm.dart");
-#import('../../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../../third_party/unittest/unittest.dart');
 #source("DomainModel.dart");
 #source("../../lib/helpers/SelectorBuilder.dart");
 #source("../../lib/helpers/MapProxy.dart");
   return res.future;
 }
 void testInsertionAndUpdate(){
-  Completer completer = new Completer();
-  futures.add(completer.future);  
-  Author author = new Author();  
-  author.name = 'Dan';
-  author.age = 3;
-  author.email = 'who@cares.net';  
-  objectory.save(author); // First insert;
-  author.age = 4;
-  objectory.save(author); // Then update;
-  objectory.find('Author').then((coll){
-    expect(coll.length).equals(1);
-    Author authFromMongo = coll[0];
-    expect(authFromMongo.age).equals(4);    
-    completer.complete(true);
-    callbackDone();
+  setUpObjectory().then((_) {
+    Author author = new Author();  
+    author.name = 'Dan';
+    author.age = 3;
+    author.email = 'who@cares.net';  
+    objectory.save(author); // First insert;
+    author.age = 4;
+    objectory.save(author); // Then update;
+    objectory.find(AUTHOR).then((coll){
+      expect(coll.length).equals(1);
+      Author authFromMongo = coll[0];
+      expect(authFromMongo.age).equals(4);
+      objectory.close();      
+      callbackDone();
+    });
   });
 }
 testNewInstanceMethod(){
-  Author author = objectory.newInstance('Author');
-  expect(author is Author).isTrue();
+  setUpObjectory().then((_) {  
+    Author author = objectory.newInstance('Author');
+    expect(author is Author).isTrue();
+    objectory.close();
+  });       
 }
 testMap2ObjectMethod(){
-  Map map = {
-    "name": "Vadim",
-    "age": 300,
-    "email": "nobody@know.it"};
-  Author author = objectory.map2Object("Author",map);
-  // Not converted to upperCase because setter has not been invoked
-  expect(author.name).equals("Vadim"); 
-  expect(author.age).equals(300);
-  expect(author.email).equals("nobody@know.it");
-  map = {
-    "streetName": "333",
-    "cityName": "44444"
-    };
-  Address address = objectory.map2Object("Address",map);  
-  expect(address.cityName).equals("44444");   
+  setUpObjectory().then((_) {  
+    Map map = {
+      "name": "Vadim",
+      "age": 300,
+      "email": "nobody@know.it"};
+    Author author = objectory.map2Object("Author",map);
+    //Not converted to upperCase because setter has not been invoked
+    expect(author.name).equals("Vadim"); 
+    expect(author.age).equals(300);
+    expect(author.email).equals("nobody@know.it");
+    map = {
+      "streetName": "333",
+      "cityName": "44444"
+        };
+    Address address = objectory.map2Object("Address",map);  
+    expect(address.cityName).equals("44444");
+    objectory.close();
+  });  
 }
 testCompoundObject(){
-  Completer completer = new Completer();
-  futures.add(completer.future);
-  Person person = new Person();  
-  person.address.cityName = 'Tyumen';
-  person.address.streetName = 'Elm';  
-  person.firstName = 'Dick';
-  objectory.save(person);
-  objectory.findOne('Person',query().id(person.id)).then((savedPerson){
-    expect(savedPerson.firstName).equals('Dick');
-    expect(savedPerson.address.streetName).equals('Elm');
-    expect(savedPerson.address.cityName).equals('Tyumen');
-    completer.complete(true);
-    callbackDone();
+  setUpObjectory().then((_) {  
+    Person person = new Person();  
+    person.address.cityName = 'Tyumen';
+    person.address.streetName = 'Elm';  
+    person.firstName = 'Dick';
+    objectory.save(person);
+    objectory.findOne(PERSON,query().id(person.id)).then((savedPerson){
+      expect(savedPerson.firstName).equals('Dick');
+      expect(savedPerson.address.streetName).equals('Elm');
+      expect(savedPerson.address.cityName).equals('Tyumen');
+      objectory.close();
+      callbackDone();
+    });        
   });
 }
 testObjectWithLinks(){
-  Completer completer = new Completer();
-  futures.add(completer.future);  
-  Person father = new Person();  
-  father.firstName = 'Father';
-  objectory.save(father);
-  Person son = new Person();  
-  son.firstName = 'Son';
-  son.father = father;
-  objectory.save(son);  
-  objectory.findOne('Person',query().id(son.id)).then((sonFromObjectory){
-    // Links must be fetched before use.
-    Expect.throws(()=>sonFromObjectory.father.firstName);
-    expect(sonFromObjectory.mother).equals(null);
-    sonFromObjectory.fetchLinks().then((_){
-      expect(sonFromObjectory.father.firstName).equals("Father");
+  setUpObjectory().then((_) {
+    Person father = new Person();  
+    father.firstName = 'Father';
+    objectory.save(father);
+    Person son = new Person();  
+    son.firstName = 'Son';
+    son.father = father;
+    objectory.save(son);  
+    objectory.findOne(PERSON,query().id(son.id)).then((sonFromObjectory){
+      // Links must be fetched before use.
+      Expect.throws(()=>sonFromObjectory.father.firstName);
       expect(sonFromObjectory.mother).equals(null);
-      completer.complete(true);      
-      callbackDone();
-    });    
+      sonFromObjectory.fetchLinks().then((_){
+        expect(sonFromObjectory.father.firstName).equals("Father");
+        expect(sonFromObjectory.mother).equals(null);
+        objectory.close();
+        callbackDone();
+      });    
+    });
+  });  
+}
+main(){    
+  group("ObjectoryVM", () { 
+    asyncTest("testCompoundObject",1,testCompoundObject);   
+    asyncTest("testInsertionAndUpdate",1,testInsertionAndUpdate);         
+    asyncTest("testObjectWithLinks",1,testObjectWithLinks);               
+    test("testNewInstanceMethod",testNewInstanceMethod);   
+    test("testMap2ObjectMethod",testMap2ObjectMethod);
   });
-}
-main(){  
-  futures = new List();  
-  setUpObjectory().then((_) {    
-    group("ObjectoryVM", () {      
-      asyncTest("testCompoundObject",1,testCompoundObject);   
-      asyncTest("testInsertionAndUpdate",1,testInsertionAndUpdate);         
-      asyncTest("testObjectWithLinks",1,testObjectWithLinks);               
-      test("testNewInstanceMethod",testNewInstanceMethod);   
-      test("testMap2ObjectMethod",testMap2ObjectMethod);      
-      //Futures.wait(futures).then((_)=>objectory.close());
-    });  
-  });    
 }

tests/objectory/PersistentObjectTest.dart

 #library("PersistenObjectTests");
 #import("../../lib/objectory/ObjectoryLib_vm.dart");
 #import("../../lib/bson/bson.dart");
-#import('../../../../dart/dart-sdk/lib/unittest/unittest.dart');
+#import('../../third_party/unittest/unittest.dart');
 #source("DomainModel.dart");
 testAuthorCreation(){
   Author author = new Author();
   author.name = 'vadim';
   author.age = 99;
   author.email = 'sdf';
-  expect(author.getKeys()[0]).equals("_id");
-  expect(author.getKeys()[1]).equals("name");
-  expect(author.getKeys()[2]).equals("age");
-  expect(author.getKeys().last()).equals("email");
-  expect(author.getKeys().length).equals(4);
+  expect(author.map.getKeys()[0]).equals("_id");
+  expect(author.map.getKeys()[1]).equals("name");
+  expect(author.map.getKeys()[2]).equals("age");
+  expect(author.map.getKeys().last()).equals("email");
+  expect(author.map.getKeys().length).equals(4);
   expect(author.name).equals('VADIM'); // converted to uppercase by custom  setter;
 }
 
   Person person = new Person();  
   person.address.cityName = 'Tyumen';
   person.address.streetName = 'Elm';  
-  person.firstName = 'Dick';
+  person.firstName = 'Dick';  
   Map map = person.map;
   expect(map["address"]["streetName"]).equals("Elm");
   expect(person.address.parent).equals(person);
   Expect.throws(()=>son.father = father,reason:"Link object must be saved (have ObjectId)");
 }  
 testFailOnAbsentProperty(){
-  IAuthor author = new Author();
+  Author author = new Author();
   Expect.throws(()=>author.sdfsdfsdfgdfgdf,reason:"Must fail on missing property getter");
 }
 

tests/objectory/allObjectoryTests.dart

 #import("ObjectoryImplVmTest.dart",prefix:"impl");
 #import("PersistentObjectTest.dart",prefix:"persistentObject");
 main(){  
-//  impl.main();
+  impl.main();
   persistentObject.main();
-  impl.main();  
 }

third_party/testing/unittest/coverage_controller.js

-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * Coverage controller logic - used by coverage test harness to embed tests in
- * DumpRenderTree and extract coverage information.
- */
-
-var LONG_LINE = 60000;
-
-function onReceive(e) {
-  if (e.data == 'unittest-suite-done') {
-    var s = JSON.stringify(top._$jscoverage);
-    var res = '';
-    // DumpRenderTree has a bug on lines longer than 2^16, so we split them
-    while (s.length > LONG_LINE) {
-      res += s.substr(0, LONG_LINE) + '<br>\n';
-      s = s.substr(LONG_LINE);
-    }
-    res += s;
-    window.document.body.innerHTML = res;
-    window.layoutTestController.notifyDone();
-  }
-}
-
-if (window.layoutTestController) {
-  window.layoutTestController.dumpAsText();
-  window.layoutTestController.waitUntilDone();
-  window.addEventListener("message", onReceive, false);
-}

third_party/testing/unittest/shared.dart

-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * Description text of the current test group. If multiple groups are nested,
- * this will contain all of their text concatenated.
- */
-String _currentGroup = '';
-
-/** Tests executed in this suite. */
-List<TestCase> _tests;
-
-/**
- * Callback used to run tests. Entrypoints can replace this with their own
- * if they want.
- */
-Function _testRunner;
-
-/** Whether this is run within dartium layout tests. */
-bool _isLayoutTest = false;
-
-/** Current test being executed. */
-int _currentTest = 0;
-
-/** Total number of callbacks that have been executed in the current test. */
-int _callbacksCalled = 0;
-
-final _UNINITIALIZED = 0;
-final _READY         = 1;
-final _RUNNING_TEST  = 2;
-
-/**
- * Whether an undetected error occurred while running the last test. These
- * errors are commonly caused by DOM callbacks that were not guarded in a
- * try-catch block.
- */
-final _UNCAUGHT_ERROR = 3;
-
-int _state = _UNINITIALIZED;
-
-final _PASS  = 'pass';
-final _FAIL  = 'fail';
-final _ERROR = 'error';
-
-/** Creates an expectation for the given value. */
-Expectation expect(value) => new Expectation(value);
-
-/** Evaluates the given function and validates that it throws an exception. */
-void expectThrow(function) {
-  bool threw = false;
-  try {
-    function();
-  } catch (var e) {
-    threw = true;
-  }
-  Expect.equals(true, threw, 'Expected exception but none was thrown.');
-}
-
-/**
- * Creates a new test case with the given description and body. The
- * description will include the descriptions of any surrounding group()
- * calls.
- */
-void test(String spec, TestFunction body) {  
-  _ensureInitialized();
-
-  _tests.add(new TestCase(_tests.length + 1, _fullSpec(spec), body, 0));
-}
-
-/**
- * Creates a new async test case with the given description and body. The
- * description will include the descriptions of any surrounding group()
- * calls.
- */
-void asyncTest(String spec, int callbacks, TestFunction body) {
-  _ensureInitialized();
-
-  final testCase = new TestCase(
-      _tests.length + 1, _fullSpec(spec), body, callbacks);
-  _tests.add(testCase);
-
-  if (callbacks < 1) {
-    testCase.error(
-        'Async tests must wait for at least one callback ', '');
-  }
-}
-
-void serialInvokeAsync(List closures) {
-  final length = closures.length;
-  if (length > 0) {
-    int i = 0;
-    void invokeNext() {
-      closures[i]();
-      i++;
-      if (i < length) {
-        window.setTimeout(invokeNext, 0);
-      }
-    }
-    window.setTimeout(invokeNext, 0);
-  }
-}
-
-/**
- * Creates a new named group of tests. Calls to group() or test() within the
- * body of the function passed to this will inherit this group's description.
- */
-void group(String description, void body()) {
-  _ensureInitialized();
-
-  // Concatenate the new group.
-  final oldGroup = _currentGroup;
-  if (_currentGroup != '') {
-    // Add a space.
-    _currentGroup = '$_currentGroup $description';
-  } else {
-    // The first group.
-    _currentGroup = description;
-  }
-
-  try {
-    body();
-  } finally {
-    // Now that the group is over, restore the previous one.
-    _currentGroup = oldGroup;
-  }
-}
-
-/** Called by subclasses to indicate that an asynchronous test completed. */
-void callbackDone() {
-  _callbacksCalled++;
-  final testCase = _tests[_currentTest];
-  if (testCase.callbacks == 0) {
-    testCase.error(
-        "Can't call callbackDone() on a synchronous test", '');
-    _state = _UNCAUGHT_ERROR;
-  } else if (_callbacksCalled > testCase.callbacks) {
-    final expected = testCase.callbacks;
-    testCase.error(
-        'More calls to callbackDone() than expected. '
-        + 'Actual: ${_callbacksCalled}, expected: ${expected}', '');
-    _state = _UNCAUGHT_ERROR;
-  } else if ((_callbacksCalled == testCase.callbacks) &&
-      (_state != _RUNNING_TEST)) {
-    testCase.pass();
-    _currentTest++;
-    _testRunner();
-  }
-}
-
-void forLayoutTests() {
-  _isLayoutTest = true;
-}
-
-/** Runs all queued tests, one at a time. */
-_runTests() {
-  _platformStartTests();
-
-  _platformDefer(() {
-    assert (_currentTest == 0);
-    _testRunner();
-  });
-}
-
-/** Runs a single test. */
-_runTest(TestCase testCase) {
-  try {
-    _callbacksCalled = 0;
-    _state = _RUNNING_TEST;
-
-    testCase.test();
-
-    if (_state != _UNCAUGHT_ERROR) {
-      if (testCase.callbacks == _callbacksCalled) {
-        testCase.pass();
-      }
-    }
-
-  } catch (ExpectException e, var trace) {
-    if (_state != _UNCAUGHT_ERROR) {
-      //TODO(pquitslund) remove guard once dartc reliably propagates traces
-      testCase.fail(e.message, trace == null ? '' : trace.toString());
-    }
-  } catch (var e, var trace) {
-    if (_state != _UNCAUGHT_ERROR) {
-      //TODO(pquitslund) remove guard once dartc reliably propagates traces
-      testCase.error('Caught ${e}', trace == null ? '' : trace.toString());
-    }
-  } finally {
-    _state = _READY;
-  }
-}
-
-/**
- * Runs a batch of tests, yielding whenever an asynchronous test starts
- * running. Tests will resume executing when such asynchronous test calls
- * [done] or if it fails with an exception.
- */
-_nextBatch() {
-  while (_currentTest < _tests.length) {
-    final testCase = _tests[_currentTest];
-
-    _runTest(testCase);
-
-    if (!testCase.isComplete && testCase.callbacks > 0) return;
-
-    _currentTest++;
-  }
-
-  _completeTests();
-}
-
-/** Publish results on the page and notify controller. */
-_completeTests() {
-  _state = _UNINITIALIZED;
-
-  int testsPassed_ = 0;
-  int testsFailed_ = 0;
-  int testsErrors_ = 0;
-
-  for (TestCase t in _tests) {
-    switch (t.result) {
-      case _PASS:  testsPassed_++; break;
-      case _FAIL:  testsFailed_++; break;
-      case _ERROR: testsErrors_++; break;
-    }
-  }
-
-  _platformCompleteTests(testsPassed_, testsFailed_, testsErrors_);
-}
-
-String _fullSpec(String spec) {
-  if (spec === null) return '$_currentGroup';
-  return _currentGroup != '' ? '$_currentGroup $spec' : spec;
-}
-
-/**
- * Lazily initializes the test library if not already initialized.
- */
-_ensureInitialized() {
-  if (_state != _UNINITIALIZED) return;
-
-  _tests = <TestCase>[];
-  _currentGroup = '';
-  _state = _READY;
-  _testRunner = _nextBatch;
-
-  _platformInitialize();
-
-  // Immediately queue the suite up. It will run after a timeout (i.e. after
-  // main() has returned).
-  _platformDefer(_runTests);
-}
-
-/**
- * Wraps an value and provides an "==" operator that can be used to verify that
- * the value matches a given expectation.
- */
-class Expectation {
-  final _value;
-
-  Expectation(this._value);
-
-  /** Asserts that the value is equivalent to [expected]. */
-  void equals(expected) {
-    // Use the type-specialized versions when appropriate to give better
-    // error messages.
-    if (_value is String && expected is String) {
-      Expect.stringEquals(expected, _value);
-    } else if (_value is Map && expected is Map) {
-      Expect.mapEquals(expected, _value);
-    } else if (_value is Set && expected is Set) {
-      Expect.setEquals(expected, _value);
-    } else {
-      Expect.equals(expected, _value);
-    }
-  }
-
-  /**
-   * Asserts that the difference between [expected] and the value is within
-   * [tolerance]. If no tolerance is given, it is assumed to be the value 4
-   * significant digits smaller than the expected value.
-   */
-  void approxEquals(num expected,
-      [num tolerance = null, String reason = null]) {
-    Expect.approxEquals(expected, _value, tolerance: tolerance, reason: reason);
-  }
-
-  /** Asserts that the value is [null]. */
-  void isNull() {
-    Expect.equals(null, _value);
-  }
-
-  /** Asserts that the value is not [null]. */
-  void isNotNull() {
-    Expect.notEquals(null, _value);
-  }
-
-  /** Asserts that the value is [true]. */
-  void isTrue() {
-    Expect.equals(true, _value);
-  }
-
-  /** Asserts that the value is [false]. */
-  void isFalse() {
-    Expect.equals(false, _value);
-  }
-
-  /** Asserts that the value has the same elements as [expected]. */
-  void equalsCollection(Collection expected) {
-    Expect.listEquals(expected, _value);
-  }
-
-  /**
-   * Checks that every element of [expected] is also in [actual], and that
-   * every element of [actual] is also in [expected].
-   */
-  void equalsSet(Iterable expected) {
-    Expect.setEquals(expected, _value);
-  }
-}
-
-/** Summarizes information about a single test case. */
-class TestCase {
-  /** Identifier for this test. */
-  final id;
-
-  /** A description of what the test is specifying. */
-  final String description;
-
-  /** The body of the test case. */
-  final TestFunction test;
-
-  /** Total number of callbacks to wait for before the test completes. */
-  int callbacks;
-
-  /** Error or failure message. */
-  String message  = '';
-
-  /**
-   * One of [_PASS], [_FAIL], or [_ERROR] or [null] if the test hasn't run yet.
-   */
-  String result;
-
-  /** Stack trace associated with this test, or null if it succeeded. */
-  String stackTrace;
-
-  Date startTime;
-
-  Duration runningTime;
-
-  TestCase(this.id, this.description, this.test, this.callbacks);
-
-  bool get isComplete() => result != null;
-
-  void pass() {
-    result = _PASS;
-  }
-
-  void fail(String message_, String stackTrace_) {
-    result = _FAIL;
-    this.message = message_;
-    this.stackTrace = stackTrace_;
-  }
-
-  void error(String message_, String stackTrace_) {
-    result = _ERROR;
-    this.message = message_;
-    this.stackTrace = stackTrace_;
-  }
-}
-
-typedef void TestFunction();

third_party/testing/unittest/test_controller.js

-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * Test controller logic - used by unit test harness to embed tests in
- * DumpRenderTree.
- */
-
-if (navigator.webkitStartDart) {
-  navigator.webkitStartDart();
-}
-
-function processMessage(msg) {
-  if (window.layoutTestController) {
-    if (msg == 'unittest-suite-done') {
-      window.layoutTestController.notifyDone();
-    } else if (msg == 'unittest-suite-wait-for-done') {
-      window.layoutTestController.startedDartTest = true;
-    }
-  }
-}
-
-function onReceive(e) {
-  processMessage(e.data);
-}
-
-if (window.layoutTestController) {
-  window.layoutTestController.dumpAsText();
-  window.layoutTestController.waitUntilDone();
-}
-window.addEventListener("message", onReceive, false);
-
-function onLoad(e) {
-  // needed for dartium compilation errors.
-  if (window.compilationError) {
-    var element = document.createElement('pre');
-    element.innerHTML = window.compilationError;
-    document.body.appendChild(element);
-    window.layoutTestController.notifyDone();
-    return;
-  }
-}
-
-window.addEventListener("DOMContentLoaded", onLoad, false);

third_party/testing/unittest/unittest_dartest.dart

-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * A simple unit test library for running tests inside the DARTest In-App test
- * runner along side the application under test in a browser.
- */
-#library("unittest");
-
-#import("dart:dom");
-
-#source("shared.dart");
-
-/** Getter so that the DARTest UI can access tests. */
-List<TestCase> get tests() => _tests;
-
-int testsRun = 0;
-int testsFailed = 0;
-int testsErrors = 0;
-
-bool previousAsyncTest = false;
-
-Function updateUI = null;
-
-Function dartestLogger = null;
-
-_platformDefer(void callback()) {
-  _testRunner = runDartests;
-  // DARTest ignores the callback. Tests are launched from UI.
-}
-
-// Update test results
-updateTestStats(TestCase test_) {
-  assert(test_.result != null);
-  if(test_.startTime != null) {
-    test_.runningTime = (new Date.now()).difference(test_.startTime);
-  }
-  testsRun++;
-  switch (test_.result) {
-    case 'fail': testsFailed++; break;
-    case 'error': testsErrors++; break;   
-  } 
-  updateUI(test_);
-}
-
-// Run tests sequentially
-runDartests() {
-  if(previousAsyncTest) {
-    updateTestStats(_tests[_currentTest - 1]);
-    previousAsyncTest = false;
-  }
-  if(_currentTest < _tests.length) {
-    final testCase = _tests[_currentTest];
-    dartestLogger('Running test:' + testCase.description);
-    testCase.startTime = new Date.now();
-    _runTest(testCase);
-    if (!testCase.isComplete && testCase.callbacks > 0) {
-      previousAsyncTest = true;
-      return;
-    }
-    updateTestStats(testCase);
-    _currentTest++;
-    window.setTimeout(runDartests, 0);
-  }
-}
-
-_platformStartTests() {
-  // TODO(shauvik): Support for VM and command line coming soon!
-  window.console.log("Warning: Running DARTest from VM or Command-line.");
-}
-
-_platformInitialize() {
-  // Do nothing
-}
-
-_platformCompleteTests(int testsPassed_, int testsFailed_, int testsErrors_) {
-  // Do nothing
-}
-
-String getTestResultsCsv() {
-  StringBuffer out = new StringBuffer();
-  _tests.forEach((final test_) {
-    String result = 'none';
-    if(test_.result != null) {
-      result = test_.result.toUpperCase();
-    }
-    out.add('${test_.id}, "${test_.description}", $result\n');
-  });
-  return out.toString();
-}

third_party/testing/unittest/unittest_dom.dart

-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * A simple unit test library for running tests in a browser.
- */
-#library("unittest");
-
-#import("dart:dom");
-
-#source("shared.dart");
-
-// TODO(rnystrom): Get rid of this if we get canonical closures for methods.
-EventListener _onErrorClosure;
-
-_platformInitialize() {
-  _onErrorClosure = (e) { _onError(e); };
-}
-
-_platformDefer(void callback()) {
-  window.setTimeout(callback, 0);
-}
-
-void _onError(e) {
- if (_currentTest < _tests.length) {
-    final testCase = _tests[_currentTest];
-    // TODO(vsm): figure out how to expose the stack trace here
-    // Currently e.message works in dartium, but not in dartc.
-    testCase.error('(DOM callback has errors) Caught ${e}', '');
-    _state = _UNCAUGHT_ERROR;
-    if (testCase.callbacks > 0) {
-      _currentTest++;
-      _testRunner();
-    }
-  }
-}
-
-/** Runs all queued tests, one at a time. */
-_platformStartTests() {
-  window.postMessage('unittest-suite-wait-for-done', '*');
-
-  // Listen for uncaught errors.
-  window.addEventListener('error', _onErrorClosure, true);
-}
-
-_platformCompleteTests(int testsPassed, int testsFailed, int testsErrors) {
-  window.removeEventListener('error', _onErrorClosure);
-
-  if (_isLayoutTest && testsPassed == _tests.length) {
-    document.body.innerHTML = "PASS";
-  } else {
-    var newBody = new StringBuffer();
-    newBody.add("<table class='unittest-table'><tbody>");
-    newBody.add(testsPassed == _tests.length
-        ? "<tr><td colspan='3' class='unittest-pass'>PASS</td></tr>"
-        : "<tr><td colspan='3' class='unittest-fail'>FAIL</td></tr>");
-
-    for (final test_ in _tests) {
-      newBody.add(_toHtml(test_));
-    }
-
-    if (testsPassed == _tests.length) {
-      newBody.add("""
-          <tr><td colspan='3' class='unittest-pass'>
-            All ${testsPassed} tests passed
-          </td></tr>""");
-    } else {
-      newBody.add("""
-          <tr><td colspan='3'>Total
-            <span class='unittest-pass'>${testsPassed} passed</span>,
-            <span class='unittest-fail'>${testsFailed} failed</span>
-            <span class='unittest-error'>${testsErrors} errors</span>
-          </td></tr>""");
-    }
-    newBody.add("</tbody></table>");
-    document.body.innerHTML = newBody.toString();
-  }
-
-  window.postMessage('unittest-suite-done', '*');
-}
-
-String _toHtml(TestCase test_) {
-  if (!test_.isComplete) {
-    return '''
-        <tr>
-          <td>${test_.id}</td>
-          <td class="unittest-error">NO STATUS</td>
-          <td>Test did not complete</td>
-        </tr>''';
-  }
-
-  var html = '''
-      <tr>
-        <td>${test_.id}</td>
-        <td class="unittest-${test_.result}">${test_.result.toUpperCase()}</td>
-        <td>Expectation: ${test_.description}. ${_htmlEscape(test_.message)}</td>
-      </tr>''';
-
-  if (test_.stackTrace != null) {
-    html +=
-        '<tr><td></td><td colspan="2"><pre>${_htmlEscape(test_.stackTrace)}</pre></td></tr>';
-  }
-
-  return html;
-}
-
-//TODO(pquitslund): Move to a common lib
-String _htmlEscape(String string) {
-  return string.replaceAll('&', '&amp;')
-               .replaceAll('<','&lt;')
-               .replaceAll('>','&gt;');
-}

third_party/testing/unittest/unittest_html.dart

-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * A simple unit test library for running tests in a browser.
- */
-#library("unittest");
-
-#import("dart:html");
-
-#source("shared.dart");
-
-// TODO(rnystrom): Get rid of this if we get canonical closures for methods.
-EventListener _onErrorClosure;
-
-_platformInitialize() {
-  _onErrorClosure = (e) { _onError(e); };
-}
-
-_platformDefer(void callback()) {
-  window.setTimeout(callback, 0);
-}
-
-void _onError(e) {
- if (_currentTest < _tests.length) {
-    final testCase = _tests[_currentTest];
-    // TODO(vsm): figure out how to expose the stack trace here
-    // Currently e.message works in dartium, but not in dartc.
-    testCase.error('(DOM callback has errors) Caught ${e}', '');
-    _state = _UNCAUGHT_ERROR;
-    if (testCase.callbacks > 0) {
-      _currentTest++;
-      _testRunner();
-    }
-  }
-}
-
-/** Runs all queued tests, one at a time. */
-_platformStartTests() {
-  window.postMessage('unittest-suite-wait-for-done', '*');
-
-  // Listen for uncaught errors.
-  window.on.error.add(_onErrorClosure);
-}
-
-_platformCompleteTests(int testsPassed, int testsFailed, int testsErrors) {
-  window.on.error.remove(_onErrorClosure);
-
-  if (_isLayoutTest && testsPassed == _tests.length) {
-    document.body.innerHTML = "PASS";
-  } else {
-    var newBody = new StringBuffer();
-    newBody.add("<table class='unittest-table'><tbody>");
-    newBody.add(testsPassed == _tests.length
-        ? "<tr><td colspan='3' class='unittest-pass'>PASS</td></tr>"
-        : "<tr><td colspan='3' class='unittest-fail'>FAIL</td></tr>");
-
-    for (final test_ in _tests) {
-      newBody.add(_toHtml(test_));
-    }
-
-    if (testsPassed == _tests.length) {
-      newBody.add("""
-          <tr><td colspan='3' class='unittest-pass'>
-            All ${testsPassed} tests passed
-          </td></tr>""");
-    } else {
-      newBody.add("""
-          <tr><td colspan='3'>Total
-            <span class='unittest-pass'>${testsPassed} passed</span>,
-            <span class='unittest-fail'>${testsFailed} failed</span>
-            <span class='unittest-error'>${testsErrors} errors</span>
-          </td></tr>""");
-    }
-    newBody.add("</tbody></table>");
-    document.body.innerHTML = newBody.toString();
-  }
-
-  window.postMessage('unittest-suite-done', '*');
-}
-
-String _toHtml(TestCase test_) {
-  if (!test_.isComplete) {
-    return '''
-        <tr>
-          <td>${test_.id}</td>
-          <td class="unittest-error">NO STATUS</td>
-          <td>Test did not complete</td>
-        </tr>''';
-  }
-
-  var html = '''
-      <tr>
-        <td>${test_.id}</td>
-        <td class="unittest-${test_.result}">${test_.result.toUpperCase()}</td>
-        <td>Expectation: ${test_.description}. ${_htmlEscape(test_.message)}</td>
-      </tr>''';
-
-  if (test_.stackTrace != null) {
-    html +=
-        '<tr><td></td><td colspan="2"><pre>${_htmlEscape(test_.stackTrace)}</pre></td></tr>';
-  }
-
-  return html;
-}
-
-//TODO(pquitslund): Move to a common lib
-String _htmlEscape(String string) {
-  return string.replaceAll('&', '&amp;')
-               .replaceAll('<','&lt;')
-               .replaceAll('>','&gt;');
-}

third_party/testing/unittest/unittest_node.dart

-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * A simple unit test entrypoint for running tests on node compiled with frog.
- */
-#library("unittest");
-
-#import('../../../frog/lib/node/node.dart');
-
-#source("shared.dart");
-
-_platformInitialize() {
-  // Do nothing.
-}
-
-_platformDefer(void callback()) {
-  setTimeout(callback, 0);
-}
-
-_platformStartTests() {
-  // Do nothing.
-}
-
-_platformCompleteTests(int testsPassed, int testsFailed, int testsErrors) {
-  // Print each test's result.
-  for (final test in _tests) {
-    print('${test.result.toUpperCase()}: ${test.description}');
-
-    if (test.message != '') {
-      print('  ${test.message}');
-    }
-  }
-
-  // Show the summary.
-  print('');
-
-  var success = false;
-  if (testsPassed == 0 && testsFailed == 0 && testsErrors == 0) {
-    print('No tests found.');
-    // This is considered a failure too: if this happens you probably have a
-    // bug in your unit tests.
-  } else if (testsFailed == 0 && testsErrors == 0) {
-    print('All $testsPassed tests passed.');
-    success = true;
-  } else {
-    print('$testsPassed PASSED, $testsFailed FAILED, $testsErrors ERRORS');
-  }
-
-  // A non-zero exit code is used by the test infrastructure to detect failure.
-  if (!success) process.exit(1);
-}

third_party/testing/unittest/unittest_vm.dart

-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * A simple unit test library for running tests on the VM.
- */
-#library('unittest');
-
-#import('dart:io');
-#source('shared.dart');
-
-_platformInitialize() {
-  // Do nothing.
-}
-
-_platformDefer(void callback()) {
-  new Timer(0, (timer) {
-    callback();
-  });
-}
-
-_platformStartTests() {
-  // Do nothing.
-}
-
-_platformCompleteTests(int testsPassed, int testsFailed, int testsErrors) {
-  // Print each test's result.
-  for (final test in _tests) {
-    print('${test.result.toUpperCase()}: ${test.description}');
-
-    if (test.message != '') {
-      print('  ${test.message}');
-    }
-  }
-
-  // Show the summary.
-  print('');
-
-  var success = false;
-  if (testsPassed == 0 && testsFailed == 0 && testsErrors == 0) {
-    print('No tests found.');
-    // This is considered a failure too: if this happens you probably have a
-    // bug in your unit tests.
-  } else if (testsFailed == 0 && testsErrors == 0) {
-    print('All $testsPassed tests passed.');
-    success = true;
-  } else {
-    print('$testsPassed PASSED, $testsFailed FAILED, $testsErrors ERRORS');
-  }
-
-  // A non-zero exit code is used by the test infrastructure to detect failure.
-  if (!success) exit(1);
-}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.