Merge branch 'innovative1-master'
diff --git a/lib/pbxProject.js b/lib/pbxProject.js
index b86fff4..6468a83 100644
--- a/lib/pbxProject.js
+++ b/lib/pbxProject.js
@@ -1872,6 +1872,39 @@
return localizationVariantGroup;
};
+pbxProject.prototype.addKnownRegion = function (name) {
+ if (!this.pbxProjectSection()[this.getFirstProject()['uuid']]['knownRegions']) {
+ this.pbxProjectSection()[this.getFirstProject()['uuid']]['knownRegions'] = [];
+ }
+ if (!this.hasKnownRegion(name)) {
+ this.pbxProjectSection()[this.getFirstProject()['uuid']]['knownRegions'].push(name);
+ }
+}
+
+pbxProject.prototype.removeKnownRegion = function (name) {
+ var regions = this.pbxProjectSection()[this.getFirstProject()['uuid']]['knownRegions'];
+ if (regions) {
+ for (var i = 0; i < regions.length; i++) {
+ if (regions[i] === name) {
+ regions.splice(i, 1);
+ break;
+ }
+ }
+ this.pbxProjectSection()[this.getFirstProject()['uuid']]['knownRegions'] = regions;
+ }
+}
+
+pbxProject.prototype.hasKnownRegion = function (name) {
+ var regions = this.pbxProjectSection()[this.getFirstProject()['uuid']]['knownRegions'];
+ if (regions) {
+ for (var i in regions) {
+ if (regions[i] === name) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
pbxProject.prototype.getPBXObject = function(name) {
return this.hash.project.objects[name];
diff --git a/test/knownRegions.js b/test/knownRegions.js
new file mode 100644
index 0000000..8418d58
--- /dev/null
+++ b/test/knownRegions.js
@@ -0,0 +1,76 @@
+var fullProject = require('./fixtures/full-project')
+ fullProjectStr = JSON.stringify(fullProject),
+ pbx = require('../lib/pbxProject'),
+ project = new pbx('.');
+
+function cleanHash() {
+ return JSON.parse(fullProjectStr);
+}
+
+exports.setUp = function (callback) {
+ project.hash = cleanHash();
+ callback();
+}
+
+exports.addKnownRegion = {
+ 'should add new region to existing knownRegions': function (test) {
+ var knownRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'];
+ test.equal(knownRegions.indexOf('Spanish'), -1);
+
+ project.addKnownRegion('Spanish')
+ knownRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'];
+ test.notEqual(knownRegions.indexOf('Spanish'), -1);
+ test.done();
+ },
+
+ 'should not add region if it already exists in knownRegions': function (test) {
+ var numberOfRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'].length;
+
+ project.addKnownRegion('German');
+ var newNumberOfRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'].length;
+ test.equal(numberOfRegions, newNumberOfRegions);
+ test.done();
+ },
+
+ 'should create knownRegions array if it does not exist': function (test) {
+ delete project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'];
+ test.ok(!project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions']);
+
+ project.addKnownRegion('German')
+ test.ok(project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions']);
+ test.done();
+ },
+}
+
+exports.removeKnownRegion = {
+ 'should remove named region from knownRegions': function (test) {
+ var knownRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'];
+ test.notEqual(knownRegions.indexOf('German'), -1);
+
+ project.removeKnownRegion('German');
+ knownRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'];
+ test.equal(knownRegions.indexOf('German'), -1);
+ test.done();
+ },
+
+ 'should do nothing if named region does not exist in knownRegions': function (test) {
+ let numberOfRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'].length;
+
+ project.removeKnownRegion('Korean');
+ let newNumberOfRegions = project.pbxProjectSection()[project.getFirstProject()['uuid']]['knownRegions'].length;
+ test.equal(numberOfRegions, newNumberOfRegions);
+ test.done();
+ },
+}
+
+exports.hasKnownRegion = {
+ 'should return true if named region exists in knownRegions': function (test) {
+ test.ok(project.hasKnownRegion('German'));
+ test.done();
+ },
+
+ 'should return false if named region does not exist in knownRegions': function (test) {
+ test.ok(!project.hasKnownRegion('Ducth'));
+ test.done();
+ },
+}