|
|
"use strict"; |
|
|
|
|
|
|
|
|
var assert = require("@sinonjs/referee").assert; |
|
|
var className = require("./class-name"); |
|
|
|
|
|
describe("className", function () { |
|
|
it("returns the class name of an instance", function () { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var instance = new (function TestClass() {})(); |
|
|
var name = className(instance); |
|
|
assert.equals(name, "TestClass"); |
|
|
}); |
|
|
|
|
|
it("returns 'Object' for {}", function () { |
|
|
var name = className({}); |
|
|
assert.equals(name, "Object"); |
|
|
}); |
|
|
|
|
|
it("returns null for an object that has no prototype", function () { |
|
|
var obj = Object.create(null); |
|
|
var name = className(obj); |
|
|
assert.equals(name, null); |
|
|
}); |
|
|
|
|
|
it("returns null for an object whose prototype was mangled", function () { |
|
|
|
|
|
function MangledObject() {} |
|
|
MangledObject.prototype = Object.create(null); |
|
|
var obj = new MangledObject(); |
|
|
var name = className(obj); |
|
|
assert.equals(name, null); |
|
|
}); |
|
|
}); |
|
|
|