test_guidarray_filtering.js
Go to the documentation of this file.
1 /*
2 //
3 // BEGIN SONGBIRD GPL
4 //
5 // This file is part of the Songbird web player.
6 //
7 // Copyright(c) 2005-2008 POTI, Inc.
8 // http://songbirdnest.com
9 //
10 // This file may be licensed under the terms of of the
11 // GNU General Public License Version 2 (the "GPL").
12 //
13 // Software distributed under the License is distributed
14 // on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
15 // express or implied. See the GPL for the specific language
16 // governing rights and limitations.
17 //
18 // You should have received a copy of the GPL along with this
19 // program. If not, go to http://www.gnu.org/licenses/gpl.html
20 // or write to the Free Software Foundation, Inc.,
21 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 //
23 // END SONGBIRD GPL
24 //
25 */
26 
31 function runTest () {
32  runPerfTest("guidarray filtering", perfTest);
33 }
34 
35 function perfTest(library, timer) {
36 
37  Components.utils.import("resource://app/jsmodules/sbProperties.jsm");
38 
39  // Approximate the cost of displaying the library and filter lists
40  // with a match-all search and an artist filter
41 
42  var filterArray1 = newGuidArray(library);
43  filterArray1.addSort(SBProperties.genre, true);
44  filterArray1.addFilter(SBProperties.hidden, new StringArrayEnumerator(["0"]), false);
45  filterArray1.addFilter(SBProperties.isList, new StringArrayEnumerator(["0"]), false);
46  filterArray1.fetchSize = 0; // Fetch all
47  filterArray1.isDistinct = true;
48  filterArray1.addFilter(SBProperties.artistName, new StringArrayEnumerator(["a*"]), true);
49  filterArray1.addFilter(SBProperties.genre, new StringArrayEnumerator(["rock","folk"]), false);
50 
51  var filterArray2 = filterArray1.clone();
52  filterArray2.clearSorts();
53  filterArray2.addSort(SBProperties.albumName, true);
54 
55  var filterArray3 = filterArray1.clone();
56  filterArray3.clearSorts();
57  filterArray3.addSort(SBProperties.artistName, true);
58 
59  var playlistArray = filterArray1.clone();
60  playlistArray.clearSorts();
61  playlistArray.addSort(SBProperties.artistName, true);
62  playlistArray.fetchSize = 300;
63  playlistArray.isDistinct = false;
64 
65  timer.start();
66 
67  for each (var array in [filterArray1, filterArray2, filterArray3, playlistArray]) {
68  array.getGuidByIndex(0);
69  array.getGuidByIndex(array.length / 2);
70  array.getGuidByIndex(array.length - 1);
71  }
72 
73  timer.stop();
74 
75 }
function perfTest(library, timer)
inArray array
function runPerfTest(aName, aTestFunc)
function runTest()
Test file.
function StringArrayEnumerator(aArray)