blob: c396c558aa05f5077d57f45ef00e31019bee0cf2 [file] [log] [blame]
var assert = require('assert');
var build = require('../').build;
var multiline = require('multiline');
describe('plist', function () {
describe('build()', function () {
it('should create a plist XML string from a String', function () {
var xml = build('test');
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>test</string>
</plist>
*/}));
});
it('should create a plist XML integer from a whole Number', function () {
var xml = build(3);
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<integer>3</integer>
</plist>
*/}));
});
it('should create a plist XML real from a fractional Number', function () {
var xml = build(Math.PI);
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<real>3.141592653589793</real>
</plist>
*/}));
});
it('should create a plist XML date from a Date', function () {
var xml = build(new Date('2010-02-08T21:41:23Z'));
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<date>2010-02-08T21:41:23Z</date>
</plist>
*/}));
});
it('should create a plist XML date from a Buffer', function () {
var xml = build(new Buffer('☃'));
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<data>4piD</data>
</plist>
*/}));
});
it('should create a plist XML true from a `true` Boolean', function () {
var xml = build(true);
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<true/>
</plist>
*/}));
});
it('should create a plist XML false from a `false` Boolean', function () {
var xml = build(false);
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<false/>
</plist>
*/}));
});
it('should create a plist XML dict from an Object', function () {
var xml = build({ foo: 'bar' });
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>foo</key>
<string>bar</string>
</dict>
</plist>
*/}));
});
it('should create a plist XML array from an Array', function () {
var xml = build([ 1, 'foo', false, new Date(1234) ]);
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<integer>1</integer>
<string>foo</string>
<false/>
<date>1970-01-01T00:00:01Z</date>
</array>
</plist>
*/}));
});
it('should properly encode an empty string', function () {
var xml = build({ a: '' });
assert.strictEqual(xml, multiline(function () {/*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>a</key>
<string></string>
</dict>
</plist>
*/}));
});
});
});