text: describe('stacked map', function () {
    var stackedMap;
  
    beforeEach(module('ui.bootstrap.modal'));
    beforeEach(inject(function ($$stackedMap) {
      stackedMap = $$stackedMap.createNew();
    }));
  
    it('should add and remove objects by key', function () {
      stackedMap.add('foo', 'foo_value');
      expect(stackedMap.length()).toEqual(1);
      expect(stackedMap.get('foo').key).toEqual('foo');
      expect(stackedMap.get('foo').value).toEqual('foo_value');
  
      stackedMap.remove('foo');
      expect(stackedMap.length()).toEqual(0);
      expect(stackedMap.get('foo')).toBeUndefined();
    });
  
    it('should support listing keys', function () {
      stackedMap.add('foo', 'foo_value');
      stackedMap.add('bar', 'bar_value');
  
      expect(stackedMap.keys()).toEqual(['foo', 'bar']);
    });
  
    it('should get topmost element', function () {
      stackedMap.add('foo', 'foo_value');
      stackedMap.add('bar', 'bar_value');
      expect(stackedMap.length()).toEqual(2);
  
      expect(stackedMap.top().key).toEqual('bar');
      expect(stackedMap.length()).toEqual(2);
    });
  
    it('should remove topmost element', function () {
      stackedMap.add('foo', 'foo_value');
      stackedMap.add('bar', 'bar_value');
  
      expect(stackedMap.removeTop().key).toEqual('bar');
      expect(stackedMap.removeTop().key).toEqual('foo');
    });
  
    it('should preserve semantic of an empty stackedMap', function () {
      expect(stackedMap.length()).toEqual(0);
      expect(stackedMap.top()).toBeUndefined();
    });
  
    it('should ignore removal of non-existing elements', function () {
      expect(stackedMap.remove('non-existing')).toBeUndefined();
    });
  });
  