Skip to content

Commit 0553f81

Browse files
committed
fix: default values for missing keys
1 parent 1179d24 commit 0553f81

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

src/defaults.mm

+12-8
Original file line numberDiff line numberDiff line change
@@ -157,19 +157,23 @@
157157
NSString *default_key = [NSString stringWithUTF8String:key.c_str()];
158158

159159
if (type == "string") {
160-
NSString *ret = [defaults stringForKey:default_key];
161-
return Napi::String::New(env, std::string([ret UTF8String]));
160+
NSString *s = [defaults stringForKey:default_key];
161+
return Napi::String::New(env, s ? std::string([s UTF8String]) : "");
162162
} else if (type == "boolean") {
163-
return Napi::Boolean::New(env, [defaults boolForKey:default_key]);
163+
bool b = [defaults boolForKey:default_key];
164+
return Napi::Boolean::New(env, b ? b : false);
164165
} else if (type == "float") {
165-
return Napi::Number::New(env, [defaults floatForKey:default_key]);
166+
float f = [defaults floatForKey:default_key];
167+
return Napi::Number::New(env, f ? f : 0);
166168
} else if (type == "integer") {
167-
return Napi::Number::New(env, [defaults integerForKey:default_key]);
169+
int i = [defaults integerForKey:default_key];
170+
return Napi::Number::New(env, i ? i : 0);
168171
} else if (type == "double") {
169-
return Napi::Number::New(env, [defaults doubleForKey:default_key]);
172+
double d = [defaults doubleForKey:default_key];
173+
return Napi::Number::New(env, d ? d : 0);
170174
} else if (type == "url") {
171-
NSString *url_string = [[defaults URLForKey:default_key] absoluteString];
172-
return Napi::String::New(env, std::string([url_string UTF8String]));
175+
NSString *u = [[defaults URLForKey:default_key] absoluteString];
176+
return Napi::String::New(env, u ? std::string([u UTF8String]) : "");
173177
} else if (type == "array") {
174178
NSArray *array = [defaults arrayForKey:default_key];
175179
return NSArrayToNapiArray(env, array);

test/module.spec.js

+13
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@ describe('node-mac-userdefaults', () => {
3838
getUserDefault('bad-type', 'hello-world')
3939
}).to.throw(`bad-type must be one of ${VALID_TYPES.join(', ')}`)
4040
})
41+
42+
it('returns values for unknown user defaults', () => {
43+
const KEY = 'UserDefaultDoesNotExist';
44+
45+
expect(getUserDefault('boolean', KEY)).to.equal(false);
46+
expect(getUserDefault('integer', KEY)).to.equal(0);
47+
expect(getUserDefault('float', KEY)).to.equal(0);
48+
expect(getUserDefault('double', KEY)).to.equal(0);
49+
expect(getUserDefault('string', KEY)).to.equal('');
50+
expect(getUserDefault('url', KEY)).to.equal('');
51+
expect(getUserDefault('array', KEY)).to.deep.equal([]);
52+
expect(getUserDefault('dictionary', KEY)).to.deep.equal({});
53+
})
4154
})
4255

4356
describe('setUserDefault()', () => {

0 commit comments

Comments
 (0)