test_library_getmedialists.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 
33  var library = createLibrary("test_library_getmedialists");
34 
35  testHiddenProperty(library);
36  testIsListProperty(library);
37  testBoth(library);
38 }
39 
40 function testHiddenProperty(library) {
41 
42  var PROP_HIDDEN = "http://songbirdnest.com/data/1.0#hidden";
43 
44  library.clear();
45  var items = [];
46  for (var i = 0; i < 10; i++) {
47  var item = library.createMediaItem(newURI("file://foo/" + i));
48  var hidden = item.getProperty(PROP_HIDDEN);
49  assertEqual(hidden, "0");
50  if (i % 2 == 0) {
51  item.setProperty(PROP_HIDDEN, "1");
52  }
53  }
54  assertEqual(library.length, 10);
55 
56  var listener = {
57  items: [],
58  onEnumerationBegin: function() {
59  },
60  onEnumeratedItem: function(list, item) {
61  this.items.push(item);
62  },
63  onEnumerationEnd: function() {
64  }
65  };
66 
67  library.enumerateItemsByProperty(PROP_HIDDEN, "0",
68  listener,
69  Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
70 
71  assertEqual(listener.items.length, 5);
72 
73  listener.items = [];
74  library.enumerateItemsByProperty(PROP_HIDDEN, "1",
75  listener,
76  Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
77 
78  assertEqual(listener.items.length, 5);
79 }
80 
81 function testIsListProperty(library) {
82 
83  var PROP_ISLIST = "http://songbirdnest.com/data/1.0#isList";
84 
85  library.clear();
86  for (var i = 0; i < 11; i++) {
87  library.createMediaItem(newURI("file://foo/" + i));
88  }
89  for (var i = 0; i < 7; i++) {
90  library.createMediaList("simple");
91  }
92  assertEqual(library.length, 18);
93 
94  var listener = {
95  items: [],
96  onEnumerationBegin: function() {
97  },
98  onEnumeratedItem: function(list, item) {
99  this.items.push(item);
100  },
101  onEnumerationEnd: function() {
102  }
103  };
104 
105  library.enumerateItemsByProperty(PROP_ISLIST, "0",
106  listener,
107  Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
108 
109  assertEqual(listener.items.length, 11);
110 
111  listener.items = [];
112 
113  library.enumerateItemsByProperty(PROP_ISLIST, "1",
114  listener,
115  Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
116 
117  assertEqual(listener.items.length, 7);
118 
119 }
120 
121 function testBoth(library) {
122 
123  var PROP_ISLIST = "http://songbirdnest.com/data/1.0#isList";
124  var PROP_HIDDEN = "http://songbirdnest.com/data/1.0#hidden";
125 
126  library.clear();
127  for (var i = 0; i < 20; i++) {
128  library.createMediaItem(newURI("file://foo/" + i));
129  }
130  for (var i = 0; i < 7; i++) {
131  library.createMediaList("simple");
132  }
133  for (var i = 0; i < 3; i++) {
134  var list = library.createMediaList("simple");
135  list.setProperty(PROP_HIDDEN, "1");
136  }
137  assertEqual(library.length, 30);
138 
139  var listener = {
140  items: [],
141  onEnumerationBegin: function() {
142  },
143  onEnumeratedItem: function(list, item) {
144  this.items.push(item);
145  },
146  onEnumerationEnd: function() {
147  }
148  };
149 
150  // All non-hidden things but no lists, just like a library view
151  var pa = createPropertyArray();
152  pa.appendProperty(PROP_ISLIST, "0");
153  pa.appendProperty(PROP_HIDDEN, "0");
154 
155  library.enumerateItemsByProperties(pa, listener,
156  Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
157 
158  assertEqual(listener.items.length, 20);
159 
160  // All non-hidden lists, for the service pane
161  listener.items = [];
162 
163  var pa = createPropertyArray();
164  pa.appendProperty(PROP_ISLIST, "1");
165  pa.appendProperty(PROP_HIDDEN, "0");
166 
167  library.enumerateItemsByProperties(pa, listener,
168  Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
169 
170  assertEqual(listener.items.length, 7);
171 
172  // All hidden lists
173  listener.items = [];
174 
175  var pa = createPropertyArray();
176  pa.appendProperty(PROP_ISLIST, "1");
177  pa.appendProperty(PROP_HIDDEN, "1");
178 
179  library.enumerateItemsByProperties(pa, listener,
180  Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
181 
182  assertEqual(listener.items.length, 3);
183 
184 }
185 
187  var pa = Cc["@songbirdnest.com/Songbird/Properties/MutablePropertyArray;1"]
188  .createInstance(Ci.sbIMutablePropertyArray);
189  return pa;
190 }
191 
const Cc
function testBoth(library)
function testHiddenProperty(library)
function createPropertyArray()
function testIsListProperty(library)
const PROP_ISLIST
function assertEqual(aExpected, aActual, aMessage)
function createLibrary(databaseGuid, databaseLocation)
Definition: test_load.js:151
function newURI(aURLString)
const Ci
var hidden
function runTest()
Test file.
_getSelectedPageStyle s i