var storedAnnoVal = annosvc.getAnnotationString(testURI, testAnnoName); 
do_check_true(annosvc.pageHasAnnotation(testURI, testAnnoName)); var storedAnnoVal = annosvc.getPageAnnotationString(testURI, testAnnoName); 
function run_test() {  // test URI  var testURI = uri("http://mozilla.com/");  var testAnnoName = "moz-test-places/annotations";  var testAnnoVal = "test";  // create new string annotation  try {    annosvc.setAnnotationString(testURI, testAnnoName, testAnnoVal, 0, 0);  } catch(ex) {    do_throw("unable to add annotation");  }  // get string annotation  var storedAnnoVal = annosvc.getAnnotationString(testURI, testAnnoName);  do_check_eq(testAnnoVal, storedAnnoVal);  // get annotation that doesn't exist  try {    annosvc.getAnnotationString(testURI, "blah");    do_throw("fetching annotation that doesn't exist, should've thrown");  } catch(ex) {}  // get annotation info  var flags = {}, exp = {}, mimeType = {}, storageType = {};  annosvc.getAnnotationInfo(testURI, testAnnoName, flags, exp, mimeType, storageType);  do_check_eq(flags.value, 0);  do_check_eq(exp.value, 0);  do_check_eq(mimeType.value, null);  do_check_eq(storageType.value, Ci.nsIAnnotationService.TYPE_STRING);  // get annotation names for a uri  var annoNames = annosvc.getPageAnnotationNames(testURI, {});  do_check_eq(annoNames.length, 1);  do_check_eq(annoNames[0], "moz-test-places/annotations");  /* copy annotations to another uri  var newURI = uri("http://mozilla.org");  var oldAnnoNames = annosvc.getPageAnnotationNames(testURI, {});  annosvc.copyAnnotations(testURI, newURI, false);  var newAnnoNames = annosvc.getPageAnnotationNames(newURI, {});  do_check_eq(oldAnnoNames.length, newAnnoNames.length);  */  // test int32 anno type  var int32Key = testAnnoName + "/types/Int32";  var int32Val = 23;  annosvc.setAnnotationInt32(testURI, int32Key, int32Val, 0, 0);  var flags = {}, exp = {}, mimeType = {}, storageType = {};  annosvc.getAnnotationInfo(testURI, int32Key, flags, exp, mimeType, storageType);  do_check_eq(flags.value, 0);  do_check_eq(exp.value, 0);  do_check_eq(mimeType.value, null);  do_check_eq(storageType.value, Ci.nsIAnnotationService.TYPE_INT32);  var storedVal = annosvc.getAnnotationInt32(testURI, int32Key);  do_check_eq(int32Val, storedVal);  do_check_eq(typeof storedVal, "number");  // test int64 anno type  var int64Key = testAnnoName + "/types/Int64";  var int64Val = 4294967296;  annosvc.setAnnotationInt64(testURI, int64Key, int64Val, 0, 0);  var flags = {}, exp = {}, mimeType = {}, storageType = {};  annosvc.getAnnotationInfo(testURI, int64Key, flags, exp, mimeType, storageType);  do_check_eq(flags.value, 0);  do_check_eq(exp.value, 0);  do_check_eq(mimeType.value, null);  do_check_eq(storageType.value, Ci.nsIAnnotationService.TYPE_INT64);  var storedVal = annosvc.getAnnotationInt64(testURI, int64Key);  do_check_eq(int64Val, storedVal);  do_check_eq(typeof storedVal, "number");  // test double anno type  var doubleKey = testAnnoName + "/types/Double";  var doubleVal = 0.000002342;  annosvc.setAnnotationDouble(testURI, doubleKey, doubleVal, 0, 0);  var flags = {}, exp = {}, mimeType = {}, storageType = {};  annosvc.getAnnotationInfo(testURI, doubleKey, flags, exp, mimeType, storageType);  do_check_eq(flags.value, 0);  do_check_eq(exp.value, 0);  do_check_eq(mimeType.value, null);  do_check_eq(storageType.value, Ci.nsIAnnotationService.TYPE_DOUBLE);  var storedVal = annosvc.getAnnotationDouble(testURI, doubleKey);  do_check_eq(doubleVal, storedVal);  do_check_true(Math.round(storedVal) != storedVal);  // test binary anno type  var binaryKey = testAnnoName + "/types/Binary";  var binaryVal = Array.prototype.map.call("splarg", function(x) { return x.charCodeAt(0); });  annosvc.setAnnotationBinary(testURI, binaryKey, binaryVal, binaryVal.length, "text/plain", 0, 0);  var flags = {}, exp = {}, mimeType = {}, storageType = {};  annosvc.getAnnotationInfo(testURI, binaryKey, flags, exp, mimeType, storageType);  do_check_eq(flags.value, 0);  do_check_eq(exp.value, 0);  do_check_eq(mimeType.value, "text/plain");  do_check_eq(storageType.value, Ci.nsIAnnotationService.TYPE_BINARY);  var data = {}, length = {}, mimeType = {};  annosvc.getAnnotationBinary(testURI, binaryKey, data, length, mimeType);  do_check_eq(binaryVal.toString(), data.value.toString());  do_check_eq(typeof data.value, "object");  // test that accessors throw for wrong types  try {    annosvc.getAnnotationString(testURI, int32Key);    do_throw("annotation string accessor didn't throw for a wrong type!");  } catch(ex) {}  try {    annosvc.getAnnotationInt32(testURI, int64Key);    do_throw("annotation int32 accessor didn't throw for a wrong type!");  } catch(ex) {}  try {    annosvc.getAnnotationInt64(testURI, int32Key);    do_throw("annotation int64 accessor didn't throw for a wrong type!");  } catch(ex) {}  try {    annosvc.getAnnotationDouble(testURI, int32Key);    do_throw("annotation double accessor didn't throw for a wrong type!");  } catch(ex) {}  try {    var data = {}, length = {}, mimeType = {};    annosvc.getAnnotationBinary(testURI, int32Key, data, length, mimeType);    do_throw("annotation binary accessor didn't throw for a wrong type!");  } catch(ex) {}}
5872	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5872/33a988643d569646ad755d5c22f56d2b3ab271c5/test_annotations.js/clean/toolkit/components/places/tests/unit/test_annotations.js