text: defineSuite([
          'DataSources/CustomDataSource',
          'Core/Event',
          'DataSources/DataSourceClock',
          'DataSources/EntityCollection'
      ], function(
          CustomDataSource,
          Event,
          DataSourceClock,
          EntityCollection) {
      'use strict';
  
      it('constructor has expected defaults', function() {
          var dataSource = new CustomDataSource();
          expect(dataSource.name).toBeUndefined();
          expect(dataSource.clock).toBeUndefined();
          expect(dataSource.entities).toBeInstanceOf(EntityCollection);
          expect(dataSource.isLoading).toBe(false);
          expect(dataSource.changedEvent).toBeInstanceOf(Event);
          expect(dataSource.errorEvent).toBeInstanceOf(Event);
          expect(dataSource.loadingEvent).toBeInstanceOf(Event);
          expect(dataSource.show).toBe(true);
      });
  
      it('show sets underlying entity collection show.', function() {
          var dataSource = new CustomDataSource();
  
          dataSource.show = false;
          expect(dataSource.show).toBe(false);
          expect(dataSource.show).toEqual(dataSource.entities.show);
  
          dataSource.show = true;
          expect(dataSource.show).toBe(true);
          expect(dataSource.show).toEqual(dataSource.entities.show);
      });
  
      it('setting name raises changed event', function() {
          var dataSource = new CustomDataSource();
  
          var spy = jasmine.createSpy('changedEvent');
          dataSource.changedEvent.addEventListener(spy);
  
          var newName = 'chester';
          dataSource.name = newName;
          expect(dataSource.name).toEqual(newName);
          expect(spy.calls.count()).toEqual(1);
          expect(spy).toHaveBeenCalledWith(dataSource);
      });
  
      it('setting clock raises changed event', function() {
          var dataSource = new CustomDataSource();
  
          var spy = jasmine.createSpy('changedEvent');
          dataSource.changedEvent.addEventListener(spy);
  
          var newClock = new DataSourceClock();
          dataSource.clock = newClock;
          expect(dataSource.clock).toBe(newClock);
          expect(spy.calls.count()).toEqual(1);
          expect(spy).toHaveBeenCalledWith(dataSource);
      });
  
      it('setting isLoading raises loading event', function() {
          var dataSource = new CustomDataSource();
  
          var spy = jasmine.createSpy('loadingEvent');
          dataSource.loadingEvent.addEventListener(spy);
  
          dataSource.isLoading = true;
          expect(spy.calls.count()).toEqual(1);
          expect(spy).toHaveBeenCalledWith(dataSource, true);
  
          dataSource.isLoading = false;
          expect(spy.calls.count()).toEqual(2);
          expect(spy).toHaveBeenCalledWith(dataSource, false);
      });
  
      it('has entity collection with link to data source', function() {
          var dataSource = new CustomDataSource();
          var entityCollection = dataSource.entities;
          expect(entityCollection.owner).toEqual(dataSource);
      });
  
  });
  