/* Copyright 2013 Google Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0, found in the LICENSE file. */ /** * Rack AllocationStats is... */ /** * ## abbreviateClass() * * `abbreviateClass()` is a method that abbreviates the inside namespaces of a * long Ruby class name. Examples: * * Array => Array * Arel::Attributes::Attribute => Arel::...::Attribute */ describe("abbreviateClass", function() { it("leaves classes with < 3 namespaces alone", function() { expect(abbreviateClass("Array")).toBe("Array"); expect(abbreviateClass("File::Stat")).toBe("File::Stat"); }); it("abbreviates classes with > 3 namespaces", function() { expect(abbreviateClass("Arel::Attributes::Attribute")). toBe('Arel::Att…Attribute'); expect(abbreviateClass("ActionDispatch::Routing::RouteSet::Generator")). toBe('ActionDispatch::Rou…Generator'); }); it("abbreviates subclasses when >= 3 namespaces", function() { expect(abbreviateClass("Array")).toBe("Array"); expect(abbreviateClass("Array")).toBe("Array"); expect(abbreviateClass("Array")). toBe('Array'); }); it("doesn't abbreviate when only 3 namespaces and middle has < 5 letters", function() { expect(abbreviateClass("ActionDispatch::Http::ParameterFilter")).toBe("ActionDispatch::Http::ParameterFilter"); }); }); /** * ## getParameterByName() * * `getParameterByName()` is a method that grabs a URL parameter from * location.search by name. It's amazing this isn't directly available. */ describe("getParameterByName", function() { it("returns blank if parameter not present", function() { spyOn(util, "locationSearch").andReturn("?a[b]=c"); expect(getParameterByName("c")).toBe(""); }); it("returns parameters by name when one parameter is present", function() { spyOn(util, "locationSearch").andReturn("?a=b"); expect(getParameterByName("a")).toBe("b"); }); it("returns parameters by name when one bracketed parameter is present", function() { spyOn(util, "locationSearch").andReturn("?a[b]=c"); expect(getParameterByName("a[b]")).toBe("c"); expect(getParameterByName("a[c]")).toBe(""); expect(getParameterByName("a")).toBe(""); }); it("returns parameters by name when multiple parameters are present", function() { spyOn(util, "locationSearch").andReturn("?a=b&c=d"); expect(getParameterByName("a")).toBe("b"); expect(getParameterByName("c")).toBe("d"); }); it("returns parameters by name when multiple bracketed parameters are present", function() { spyOn(util, "locationSearch").andReturn("?a[b]=c&a[d]=e"); expect(getParameterByName("a[b]")).toBe("c"); expect(getParameterByName("a[d]")).toBe("e"); expect(getParameterByName("a[e]")).toBe(""); }); }); describe("filterOutPwd", function() { it("filters out allocations with a sourcefile in PWD", function() { var a1 = { class: 'Thread::ConditionVariable', file: '/monitor.rb' }, a2 = { class: 'ActionView::CompiledTemplates', file: '/app/views/projects/index.html.erb' }, allocations = [ a1, a2 ], filtered = filterOutPwd(allocations); expect(filtered).toEqual([a1]); }); }); describe("filterOutRuby", function() { it("filters out allocations with a sourcefile in RUBYLIBDIR", function() { var a1 = { class: 'Thread::ConditionVariable', file: '/monitor.rb' }, a2 = { class: 'ActionView::CompiledTemplates', file: '/app/views/projects/index.html.erb' }, allocations = [ a1, a2 ], filtered = filterOutRuby(allocations); expect(filtered).toEqual([a2]); }); }); /** * Copyright 2013 Google Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0, found in the LICENSE file. */