From a78bb6b946840a7095bce29af69a3f1c54781de8 Mon Sep 17 00:00:00 2001 From: fkaelberer Date: Fri, 26 Dec 2014 17:43:13 +0100 Subject: [PATCH] Use binary search in getVisibleElements() --- test/unit/ui_utils_spec.js | 37 ++++++++++++++++++ test/unit/unit_test.html | 2 + web/ui_utils.js | 78 +++++++++++++++++++++++++++++--------- 3 files changed, 100 insertions(+), 17 deletions(-) create mode 100644 test/unit/ui_utils_spec.js diff --git a/test/unit/ui_utils_spec.js b/test/unit/ui_utils_spec.js new file mode 100644 index 0000000000000..757aef253e23a --- /dev/null +++ b/test/unit/ui_utils_spec.js @@ -0,0 +1,37 @@ +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ +/* globals expect, it, describe, binarySearchFirstItem */ + +'use strict'; + +describe('ui_utils', function() { + + describe('binary search', function() { + function isTrue(boolean) { + return boolean; + } + function isGreater3(number) { + return number > 3; + } + + it('empty array', function() { + expect(binarySearchFirstItem([], isTrue)).toEqual(0); + }); + it('single boolean entry', function() { + expect(binarySearchFirstItem([false], isTrue)).toEqual(1); + expect(binarySearchFirstItem([true], isTrue)).toEqual(0); + }); + it('three boolean entries', function() { + expect(binarySearchFirstItem([true, true, true], isTrue)).toEqual(0); + expect(binarySearchFirstItem([false, true, true], isTrue)).toEqual(1); + expect(binarySearchFirstItem([false, false, true], isTrue)).toEqual(2); + expect(binarySearchFirstItem([false, false, false], isTrue)).toEqual(3); + }); + it('three numeric entries', function() { + expect(binarySearchFirstItem([0, 1, 2], isGreater3)).toEqual(3); + expect(binarySearchFirstItem([2, 3, 4], isGreater3)).toEqual(2); + expect(binarySearchFirstItem([4, 5, 6], isGreater3)).toEqual(0); + }); + }); +}); + diff --git a/test/unit/unit_test.html b/test/unit/unit_test.html index c8f59fc9e566a..9b43e01a322e6 100644 --- a/test/unit/unit_test.html +++ b/test/unit/unit_test.html @@ -40,6 +40,7 @@ + @@ -52,6 +53,7 @@ +