Blame view

framework/thirdparty/jasmine/spec/suites/PrettyPrintSpec.js 3.38 KB
0084d336   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  describe("jasmine.pp", function () {
    it("should wrap strings in single quotes", function() {
      expect(jasmine.pp("some string")).toEqual("'some string'");
      expect(jasmine.pp("som' string")).toEqual("'som' string'");
    });
  
    it("should stringify primitives properly", function() {
      expect(jasmine.pp(true)).toEqual("true");
      expect(jasmine.pp(false)).toEqual("false");
      expect(jasmine.pp(null)).toEqual("null");
      expect(jasmine.pp(jasmine.undefined)).toEqual("undefined");
      expect(jasmine.pp(3)).toEqual("3");
      expect(jasmine.pp(-3.14)).toEqual("-3.14");
    });
  
    it("should stringify arrays properly", function() {
      expect(jasmine.pp([1, 2])).toEqual("[ 1, 2 ]");
      expect(jasmine.pp([1, 'foo', {}, jasmine.undefined, null])).toEqual("[ 1, 'foo', {  }, undefined, null ]");
    });
  
    it("should indicate circular array references", function() {
      var array1 = [1, 2];
      var array2 = [array1];
      array1.push(array2);
      expect(jasmine.pp(array1)).toEqual("[ 1, 2, [ <circular reference: Array> ] ]");
    });
  
    it("should stringify objects properly", function() {
      expect(jasmine.pp({foo: 'bar'})).toEqual("{ foo : 'bar' }");
      expect(jasmine.pp({foo:'bar', baz:3, nullValue: null, undefinedValue: jasmine.undefined})).toEqual("{ foo : 'bar', baz : 3, nullValue : null, undefinedValue : undefined }");
      expect(jasmine.pp({foo: function () {
      }, bar: [1, 2, 3]})).toEqual("{ foo : Function, bar : [ 1, 2, 3 ] }");
    });
  
    it("should stringify RegExp objects properly", function() {
      expect(jasmine.pp(/x|y|z/)).toEqual("/x|y|z/");
    });
  
    it("should indicate circular object references", function() {
      var sampleValue = {foo: 'hello'};
      sampleValue.nested = sampleValue;
      expect(jasmine.pp(sampleValue)).toEqual("{ foo : 'hello', nested : <circular reference: Object> }");
    });
  
    it("should indicate getters on objects as such", function() {
      var sampleValue = {id: 1};
      if (sampleValue.__defineGetter__) {
        //not supported in IE!
        sampleValue.__defineGetter__('calculatedValue', function() {
          throw new Error("don't call me!");
        });
      }
      if (sampleValue.__defineGetter__) {
        expect(jasmine.pp(sampleValue)).toEqual("{ id : 1, calculatedValue : <getter> }");
      }
      else {
        expect(jasmine.pp(sampleValue)).toEqual("{ id : 1 }");
      }
    });
  
    it("should stringify HTML nodes properly", function() {
      var sampleNode = document.createElement('div');
      sampleNode.innerHTML = 'foo<b>bar</b>';
      expect(jasmine.pp(sampleNode)).toEqual("HTMLNode");
      expect(jasmine.pp({foo: sampleNode})).toEqual("{ foo : HTMLNode }");
    });
  
    it('should not do HTML escaping of strings', function() {
      expect(jasmine.pp('some <b>html string</b> &', false)).toEqual('\'some <b>html string</b> &\'');
    });
  
    it("should abbreviate the global (usually window) object", function() {
      expect(jasmine.pp(jasmine.getGlobal())).toEqual("<global>");
    });
  
    it("should stringify Date objects properly", function() {
      var now = new Date();
      expect(jasmine.pp(now)).toEqual("Date(" + now.toString() + ")");
    });
  
    it("should stringify spy objects properly", function() {
      var TestObject = {
        someFunction: function() {
        }
      };
      spyOn(TestObject, 'someFunction');
      expect(jasmine.pp(TestObject.someFunction)).toEqual("spy on someFunction");
  
      expect(jasmine.pp(jasmine.createSpy("something"))).toEqual("spy on something");
    });
  
  });