You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2012/11/27 03:07:31 UTC

[20/30] git commit: linked globalization api to unit tested

linked globalization api to unit tested


Project: http://git-wip-us.apache.org/repos/asf/cordova-wp8/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp8/commit/835b0867
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp8/tree/835b0867
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp8/diff/835b0867

Branch: refs/heads/master
Commit: 835b0867af8ab37d602b87ca7ca83991d6158b7c
Parents: 880e2f3
Author: sgrebnov <se...@gmail.com>
Authored: Mon Nov 19 16:32:49 2012 +0400
Committer: sgrebnov <se...@gmail.com>
Committed: Mon Nov 19 16:32:49 2012 +0400

----------------------------------------------------------------------
 .../MobileSpecUnitTests/MobileSpecUnitTests.csproj |    4 +
 tests/MobileSpecUnitTests/www/cordova.js           |    5 +
 tests/MobileSpecUnitTests/www/globalization.js     |  540 +++++++++++++++
 3 files changed, 549 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/835b0867/tests/MobileSpecUnitTests/MobileSpecUnitTests.csproj
----------------------------------------------------------------------
diff --git a/tests/MobileSpecUnitTests/MobileSpecUnitTests.csproj b/tests/MobileSpecUnitTests/MobileSpecUnitTests.csproj
index 25c3bb8..64fd4b8 100644
--- a/tests/MobileSpecUnitTests/MobileSpecUnitTests.csproj
+++ b/tests/MobileSpecUnitTests/MobileSpecUnitTests.csproj
@@ -119,6 +119,9 @@
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
+    <Compile Include="..\..\plugins\www\plugins\Globalization\Globalization.cs">
+      <Link>Globalization.cs</Link>
+    </Compile>
     <Compile Include="App.xaml.cs">
       <DependentUpon>App.xaml</DependentUpon>
     </Compile>
@@ -206,6 +209,7 @@
     <Content Include="www\cordova-2.2.0.js" />
     <Content Include="www\cordova.js" />
     <Content Include="www\events\index.html" />
+    <Content Include="www\globalization.js" />
     <Content Include="www\index.html">
       <SubType>Designer</SubType>
     </Content>

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/835b0867/tests/MobileSpecUnitTests/www/cordova.js
----------------------------------------------------------------------
diff --git a/tests/MobileSpecUnitTests/www/cordova.js b/tests/MobileSpecUnitTests/www/cordova.js
index 5ceca3a..e8e9098 100644
--- a/tests/MobileSpecUnitTests/www/cordova.js
+++ b/tests/MobileSpecUnitTests/www/cordova.js
@@ -12,3 +12,8 @@ function backHome() {
 	    window.history.go(-1);
 	}
 }
+
+// extras and plugins
+
+// globalization.js
+document.write('<script type="text/javascript" charset="utf-8" src="' + cordovaPath.replace('cordova-' + VERSION + '.js', 'globalization.js') + '"></script>');

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/835b0867/tests/MobileSpecUnitTests/www/globalization.js
----------------------------------------------------------------------
diff --git a/tests/MobileSpecUnitTests/www/globalization.js b/tests/MobileSpecUnitTests/www/globalization.js
new file mode 100644
index 0000000..e593633
--- /dev/null
+++ b/tests/MobileSpecUnitTests/www/globalization.js
@@ -0,0 +1,540 @@
+var Globalization = function() {  
+};
+
+Globalization.prototype.getPreferredLanguage = function(successCB, failureCB)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.getPreferredLanguage Error: successCB is not a function");
+        return;
+    }
+    
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.getPreferredLanguage Error: failureCB is not a function");
+        return;
+    }
+    
+	cordova.exec(successCB, failureCB, "Globalization","getPreferredLanguage", []);
+};
+	
+/**
+* Returns the string identifier for the client's current locale setting.
+* It returns the locale identifier string to the successCB callback with a 
+* properties object as a parameter. If there is an error getting the locale, 
+* then the errorCB callback is invoked.
+*
+* @param {Function} successCB
+* @param {Function} errorCB
+*
+* @return Object.value {String}: The locale identifier
+*
+* @error GlobalizationError.UNKNOWN_ERROR 
+*
+* Example
+*	globalization.getLocaleName(function (locale) {alert('locale:' + locale.value + '\n');}, 
+*								function () {});
+*/	
+Globalization.prototype.getLocaleName = function(successCB, failureCB)
+{
+	// successCallback required
+	if (typeof successCB != "function") {	
+        console.log("Globalization.getLocaleName Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {        
+    	console.log("Globalization.getLocaleName Error: failureCB is not a function");
+        return;
+    }
+	cordova.exec(successCB, failureCB, "Globalization","getLocaleName", []);
+};
+
+	
+/**
+* Returns a date formatted as a string according to the client's user preferences and 
+* calendar using the time zone of the client. It returns the formatted date string to the 
+* successCB callback with a properties object as a parameter. If there is an error 
+* formatting the date, then the errorCB callback is invoked. 
+*
+* The defaults are: formatLenght="short" and selector="date and time"
+*
+* @param {Date} date 
+* @param {Function} successCB
+* @param {Function} errorCB
+* @param {Object} options {optional}
+*			formatLength {String}: 'short', 'medium', 'long', or 'full'
+*			selector {String}: 'date', 'time', or 'date and time' 
+* 
+* @return Object.value {String}: The localized date string
+*
+* @error GlobalizationError.FORMATTING_ERROR 
+*
+* Example
+*	globalization.dateToString(new Date(),
+*				function (date) {alert('date:' + date.value + '\n');},
+*				function (errorCode) {alert(errorCode);},
+*				{formatLength:'short'}); 
+*/	
+Globalization.prototype.dateToString = function(date, successCB, failureCB, options)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.dateToString Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.dateToString Error: failureCB is not a function");
+        return;
+    }
+	
+	
+	if (date instanceof Date){
+		var dateValue;
+		dateValue = date.valueOf();		
+		cordova.exec(successCB, failureCB, "Globalization", "dateToString", [{"date": dateValue, "options": options}]);
+	}
+	else {
+		console.log("Globalization.dateToString Error: date is not a Date object");
+	}
+};
+
+
+/**
+* Parses a date formatted as a string according to the client's user 
+* preferences and calendar using the time zone of the client and returns 
+* the corresponding date object. It returns the date to the successCB 
+* callback with a properties object as a parameter. If there is an error 
+* parsing the date string, then the errorCB callback is invoked.
+*
+* The defaults are: formatLength="short" and selector="date and time"
+*
+* @param {String} dateString 
+* @param {Function} successCB
+* @param {Function} errorCB
+* @param {Object} options {optional}
+*			formatLength {String}: 'short', 'medium', 'long', or 'full'
+*			selector {String}: 'date', 'time', or 'date and time' 
+* 
+* @return	Object.year {Number}: The four digit year
+*			Object.month {Number}: The month from (0 - 11)
+*			Object.day {Number}: The day from (1 - 31)
+*			Object.hour {Number}: The hour from (0 - 23)
+*			Object.minute {Number}: The minute from (0 - 59)
+*			Object.second {Number}: The second from (0 - 59)
+*			Object.millisecond {Number}: The milliseconds (from 0 - 999), 
+*										not available on all platforms
+* 
+* @error GlobalizationError.PARSING_ERROR
+*
+* Example
+*	globalization.stringToDate('4/11/2011',
+*				function (date) { alert('Month:' + date.month + '\n' +
+*					'Day:' + date.day + '\n' +
+*					'Year:' + date.year + '\n');},
+*				function (errorCode) {alert(errorCode);},
+*				{selector:'date'});
+*/	
+Globalization.prototype.stringToDate = function(dateString, successCB, failureCB, options)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.stringToDate Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.stringToDate Error: failureCB is not a function");
+        return;
+    }	
+	if (typeof dateString == "string"){
+		cordova.exec(successCB, failureCB, "Globalization", "stringToDate", [{"dateString": dateString, "options": options}]);
+	}
+	else {
+		console.log("Globalization.stringToDate Error: dateString is not a string");
+	}
+};
+
+	
+/**
+* Returns a pattern string for formatting and parsing dates according to the client's 
+* user preferences. It returns the pattern to the successCB callback with a 
+* properties object as a parameter. If there is an error obtaining the pattern, 
+* then the errorCB callback is invoked.
+*
+* The defaults are: formatLength="short" and selector="date and time"
+*
+* @param {Function} successCB
+* @param {Function} errorCB
+* @param {Object} options {optional}
+*			formatLength {String}: 'short', 'medium', 'long', or 'full'
+*			selector {String}: 'date', 'time', or 'date and time' 
+* 
+* @return	Object.pattern {String}: The date and time pattern for formatting and parsing dates. 
+*									The patterns follow Unicode Technical Standard #35
+*									http://unicode.org/reports/tr35/tr35-4.html
+*			Object.timezone {String}: The abbreviated name of the time zone on the client
+*			Object.utc_offset {Number}: The current difference in seconds between the client's 
+*										time zone and coordinated universal time. 
+*			Object.dst_offset {Number}: The current daylight saving time offset in seconds 
+*										between the client's non-daylight saving's time zone 
+*										and the client's daylight saving's time zone.
+*
+* @error GlobalizationError.PATTERN_ERROR
+*
+* Example
+*	globalization.getDatePattern(
+*				function (date) {alert('pattern:' + date.pattern + '\n');},
+*				function () {},
+*				{formatLength:'short'});
+*/	
+Globalization.prototype.getDatePattern = function(successCB, failureCB, options)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.getDatePattern Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.getDatePattern Error: failureCB is not a function");
+        return;
+    }
+	
+	cordova.exec(successCB, failureCB, "Globalization", "getDatePattern", [{"options": options}]);
+};
+
+	
+/**
+* Returns an array of either the names of the months or days of the week 
+* according to the client's user preferences and calendar. It returns the array of names to the 
+* successCB callback with a properties object as a parameter. If there is an error obtaining the 
+* names, then the errorCB callback is invoked.
+*
+* The defaults are: type="wide" and item="months"
+*
+* @param {Function} successCB
+* @param {Function} errorCB
+* @param {Object} options {optional}
+*			type {String}: 'narrow' or 'wide'
+*			item {String}: 'months', or 'days' 
+* 
+* @return Object.value {Array{String}}: The array of names starting from either 
+*										the first month in the year or the 
+*										first day of the week.
+* @error GlobalizationError.UNKNOWN_ERROR
+*
+* Example
+*	globalization.getDateNames(function (names) { 
+*		for(var i = 0; i < names.value.length; i++) {
+*			alert('Month:' + names.value[i] + '\n');}},
+*		function () {});
+*/	
+Globalization.prototype.getDateNames = function(successCB, failureCB, options)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.getDateNames Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.getDateNames Error: failureCB is not a function");
+        return;
+    }
+    cordova.exec(successCB, failureCB, "Globalization", "getDateNames", [{"options": options}]);
+};
+
+/**
+* Returns whether daylight savings time is in effect for a given date using the client's 
+* time zone and calendar. It returns whether or not daylight savings time is in effect 
+* to the successCB callback with a properties object as a parameter. If there is an error 
+* reading the date, then the errorCB callback is invoked.
+*
+* @param {Date} date
+* @param {Function} successCB
+* @param {Function} errorCB 
+* 
+* @return Object.dst {Boolean}: The value "true" indicates that daylight savings time is 
+*								in effect for the given date and "false" indicate that it is not.
+*
+* @error GlobalizationError.UNKNOWN_ERROR
+*
+* Example
+*	globalization.isDayLightSavingsTime(new Date(),
+*				function (date) {alert('dst:' + date.dst + '\n');}
+*				function () {});
+*/	
+Globalization.prototype.isDayLightSavingsTime = function(date, successCB, failureCB)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.isDayLightSavingsTime Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.isDayLightSavingsTime Error: failureCB is not a function");
+        return;
+    }
+	
+	
+	if (date instanceof Date){
+		var dateValue;
+		dateValue = date.valueOf();
+		cordova.exec(successCB, failureCB, "Globalization", "isDayLightSavingsTime", [{"date": dateValue}]);
+	}
+	else {
+		console.log("Globalization.isDayLightSavingsTime Error: date is not a Date object");
+	}
+	
+};
+
+/**
+* Returns the first day of the week according to the client's user preferences and calendar. 
+* The days of the week are numbered starting from 1 where 1 is considered to be Sunday. 
+* It returns the day to the successCB callback with a properties object as a parameter. 
+* If there is an error obtaining the pattern, then the errorCB callback is invoked.
+*
+* @param {Function} successCB
+* @param {Function} errorCB 
+* 
+* @return Object.value {Number}: The number of the first day of the week.
+*
+* @error GlobalizationError.UNKNOWN_ERROR
+*
+* Example
+*	globalization.getFirstDayOfWeek(function (day) 
+*				{ alert('Day:' + day.value + '\n');},
+*				function () {});
+*/	
+Globalization.prototype.getFirstDayOfWeek = function(successCB, failureCB)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.getFirstDayOfWeek Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.getFirstDayOfWeek Error: failureCB is not a function");
+        return;
+    }
+	
+	cordova.exec(successCB, failureCB, "Globalization", "getFirstDayOfWeek", []);
+};
+
+	
+/**
+* Returns a number formatted as a string according to the client's user preferences. 
+* It returns the formatted number string to the successCB callback with a properties object as a 
+* parameter. If there is an error formatting the number, then the errorCB callback is invoked.
+*
+* The defaults are: type="decimal"
+*
+* @param {Number} number
+* @param {Function} successCB
+* @param {Function} errorCB
+* @param {Object} options {optional}
+*			type {String}: 'decimal', "percent", or 'currency'
+* 
+* @return Object.value {String}: The formatted number string.
+*
+* @error GlobalizationError.FORMATTING_ERROR
+*
+* Example
+*	globalization.numberToString(3.25,
+*				function (number) {alert('number:' + number.value + '\n');},
+*				function () {},
+*				{type:'decimal'});
+*/	
+Globalization.prototype.numberToString = function(number, successCB, failureCB, options)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.numberToString Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.numberToString Error: failureCB is not a function");
+        return;
+    }
+	
+	if(typeof number == "number") {
+		cordova.exec(successCB, failureCB, "Globalization", "numberToString", [{"number": number, "options": options}]);
+	}
+	else {
+		console.log("Globalization.numberToString Error: number is not a number");
+	}
+};
+
+/**
+* Parses a number formatted as a string according to the client's user preferences and 
+* returns the corresponding number. It returns the number to the successCB callback with a
+* properties object as a parameter. If there is an error parsing the number string, then 
+* the errorCB callback is invoked.
+*
+* The defaults are: type="decimal"
+*
+* @param {String} numberString
+* @param {Function} successCB
+* @param {Function} errorCB
+* @param {Object} options {optional}
+*			type {String}: 'decimal', "percent", or 'currency'
+* 
+* @return Object.value {Number}: The parsed number.
+*
+* @error GlobalizationError.PARSING_ERROR
+*
+* Example
+*	globalization.stringToNumber('1234.56',
+*				function (number) {alert('Number:' + number.value + '\n');},
+*				function () { alert('Error parsing number');});
+*/	
+Globalization.prototype.stringToNumber = function(numberString, successCB, failureCB, options)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.stringToNumber Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.stringToNumber Error: failureCB is not a function");
+        return;
+    }
+	
+	if(typeof numberString == "string") {
+		cordova.exec(successCB, failureCB, "Globalization", "stringToNumber", [{"numberString": numberString, "options": options}]);
+	}
+	else {
+		console.log("Globalization.stringToNumber Error: numberString is not a string");
+	}
+};
+
+/**
+* Returns a pattern string for formatting and parsing numbers according to the client's user 
+* preferences. It returns the pattern to the successCB callback with a properties object as a 
+* parameter. If there is an error obtaining the pattern, then the errorCB callback is invoked.
+*
+* The defaults are: type="decimal"
+*
+* @param {Function} successCB
+* @param {Function} errorCB
+* @param {Object} options {optional}
+*			type {String}: 'decimal', "percent", or 'currency'
+* 
+* @return	Object.pattern {String}: The number pattern for formatting and parsing numbers. 
+*									The patterns follow Unicode Technical Standard #35. 
+*									http://unicode.org/reports/tr35/tr35-4.html
+*			Object.symbol {String}: The symbol to be used when formatting and parsing 
+*									e.g., percent or currency symbol.
+*			Object.fraction {Number}: The number of fractional digits to use when parsing and 
+*									formatting numbers.
+*			Object.rounding {Number}: The rounding increment to use when parsing and formatting.
+*			Object.positive {String}: The symbol to use for positive numbers when parsing and formatting.
+*			Object.negative: {String}: The symbol to use for negative numbers when parsing and formatting.
+*			Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
+*			Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
+*
+* @error GlobalizationError.PATTERN_ERROR
+*
+* Example
+*	globalization.getNumberPattern(
+*				function (pattern) {alert('Pattern:' + pattern.pattern + '\n');},
+*				function () {});
+*/	
+Globalization.prototype.getNumberPattern = function(successCB, failureCB, options)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.getNumberPattern Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.getNumberPattern Error: failureCB is not a function");
+        return;
+    }
+	
+	cordova.exec(successCB, failureCB, "Globalization", "getNumberPattern", [{"options": options}]);	
+};
+
+/**
+* Returns a pattern string for formatting and parsing currency values according to the client's 
+* user preferences and ISO 4217 currency code. It returns the pattern to the successCB callback with a 
+* properties object as a parameter. If there is an error obtaining the pattern, then the errorCB 
+* callback is invoked.
+*
+* @param {String} currencyCode	
+* @param {Function} successCB
+* @param {Function} errorCB
+* 
+* @return	Object.pattern {String}: The currency pattern for formatting and parsing currency values. 
+*									The patterns follow Unicode Technical Standard #35 
+*									http://unicode.org/reports/tr35/tr35-4.html
+*			Object.code {String}: The ISO 4217 currency code for the pattern.
+*			Object.fraction {Number}: The number of fractional digits to use when parsing and 
+*									formatting currency.
+*			Object.rounding {Number}: The rounding increment to use when parsing and formatting.
+*			Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
+*			Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
+*
+* @error GlobalizationError.FORMATTING_ERROR
+*
+* Example
+*	globalization.getCurrencyPattern('EUR',
+*				function (currency) {alert('Pattern:' + currency.pattern + '\n');}
+*				function () {});
+*/	
+Globalization.prototype.getCurrencyPattern = function(currencyCode, successCB, failureCB)
+{
+	// successCallback required
+	if (typeof successCB != "function") {
+        console.log("Globalization.getCurrencyPattern Error: successCB is not a function");
+        return;
+    }
+	
+    // errorCallback required
+    if (typeof failureCB != "function") {
+        console.log("Globalization.getCurrencyPattern Error: failureCB is not a function");
+        return;
+    }
+	
+	if(typeof currencyCode == "string") {
+		cordova.exec(successCB, failureCB, "Globalization", "getCurrencyPattern", [{"currencyCode": currencyCode}]);
+	}
+	else {
+		console.log("Globalization.getCurrencyPattern Error: currencyCode is not a currency code");
+	}
+};
+
+GlobalizationError = function() {
+	this.code = null;
+}
+
+// Globalization error codes
+GlobalizationError.UNKNOWN_ERROR = 0;
+GlobalizationError.FORMATTING_ERROR = 1;
+GlobalizationError.PARSING_ERROR = 2;
+GlobalizationError.PATTERN_ERROR = 3;
+
+
+if(!window.plugins) {
+    window.plugins = {};
+}
+if (!window.plugins.globalization) {
+    window.plugins.globalization = new Globalization();
+}