123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- 'use strict';
- const chai = require('chai');
- const sinon = require('sinon');
- const sinonChai = require('sinon-chai');
- const expect = chai.expect;
- chai.use(sinonChai);
- describe("Basic testing with backward compatibility to pre 0.3.x", function () {
- var fs = require('fs');
- var MultiIni = require('../src');
- it("Read a basic with a section and 2 simple keys and a comment", function () {
- var data = MultiIni.read('test/data/single.ini');
- expect(data).not.to.be.null;
- expect(data['section1']).to.be.defined;
- expect(data['section1']['key1']).to.equal('value1');
- expect(data['section1']['key2']).to.equal('value2');
- expect(data['section1']['key3']).to.equal('value3');
- expect(data['section1']['key4']).to.equal('value4');
- expect(data['section1']['key5']).to.equal('value5');
- expect(data['section1']['key6']).to.equal('value6');
- expect(data['section1']['key7']).to.equal(' value7');
- });
- it("Read a basic with a section with multi line values", function () {
- var data = MultiIni.read('test/data/multi_line.ini');
- expect(data).not.to.be.null;
- expect(data['section1']).to.be.defined;
- // test first value
- expect(data['section1']['key1']).to.equal('value1');
- // multi line parsing should stop to fetch key5
- expect(data['section1']['key5']).to.equal('value5');
- expect(data['section1']['key2']).to.equal('line1\nline2');
- expect(data['section1']['key3']).to.equal('\nline2\nline3');
- expect(data['section1']['key4']).to.equal('\nline2\nline3\n');
- });
- it("Read a basic with a section with multi level keys and single and multi line values", function () {
- var data = MultiIni.read('test/data/multi_level_line.ini');
- expect(data).not.to.be.null;
- expect(data['section1']).to.be.defined;
- // check for the second level
- expect(data['section1']['key1']).to.be.defined;
- expect(data['section1']['key1']['subkey1']).to.equal('value1');
- expect(data['section1']['key1']['subkey2']).to.equal('value2');
- // check the third level
- expect(data['section1']['key2']).to.be.defined;
- expect(data['section1']['key2']['subkey1']['subkey1']).to.equal('value3');
- expect(data['section1']['key2']['subkey1']['subkey2']).to.equal('value4');
- expect(data['section1']['key2']['subkey2']).to.equal('value5');
- expect(data['section1']['key2']['subkey3']).to.be.defined;
- expect(data['section1']['key2']['subkey3']['subkey1']).to.equal('value6');
- // multi line parsing with second level
- expect(data['section1']['key3']).to.be.defined;
- expect(data['section1']['key3']['subkey1']).to.equal('line1\nline2');
- expect(data['section1']['key3']['subkey2']).to.equal('\nline2\nline3');
- expect(data['section1']['key3']['subkey3']).to.equal('\nline2\nline3\n');
- // multi line parsing with third level
- expect(data['section1']['key4']).to.be.defined;
- expect(data['section1']['key4']['subkey1']).to.be.defined;
- expect(data['section1']['key4']['subkey1']['subkey1']).to.equal('line1\nline2');
- expect(data['section1']['key4']['subkey1']['subkey2']).to.equal('\nline2\nline3');
- expect(data['section1']['key4']['subkey1']['subkey3']).to.equal('\nline2\nline3\n');
- expect(data['section1']['key4']['subkey2']).to.equal('value');
- });
- it("Read ini with array definitions", function () {
- var data = MultiIni.read('test/data/array.ini');
- expect(data).not.to.be.null;
- expect(data['section1']).to.be.defined;
- // array in key
- expect(data['section1']['key1']).to.be.defined;
- expect(data['section1']['key1'].length).to.equal(2);
- expect(data['section1']['key1'][0]).to.equal('value1');
- expect(data['section1']['key1'][1]).to.equal('value2');
- // normal key value
- expect(data['section1']['key2']).to.equal('value3');
- // array in subkey
- expect(data['section1']['key3']).to.be.defined;
- expect(data['section1']['key3']['subkey']).to.be.defined;
- expect(data['section1']['key3']['subkey'].length).to.equal(2);
- expect(data['section1']['key3']['subkey'][0]).to.equal('value4');
- expect(data['section1']['key3']['subkey'][1]).to.equal('value5');
- });
- it("Write ini file with one section and multiple single line values", function () {
- var data = {
- section1: {
- key1: 'value1',
- key2: 'value2'
- }
- };
- MultiIni.write('test/out/single.ini', data);
- var content = fs.readFileSync('test/out/single.ini', {encoding: 'utf8'});
- var expectedContent = fs.readFileSync('test/data/result/single.ini', {encoding: 'utf8'});
- expect(content).to.equal(expectedContent);
- });
- it("Write ini file with one section and multiple multi level single line values", function () {
- var data = {
- section1: {
- key1: {
- subkey1: 'value1',
- subkey2: 'value2'
- },
- key2: {
- subkey: 'value3'
- }
- }
- };
- MultiIni.write('test/out/multi_level.ini', data);
- var content = fs.readFileSync('test/out/multi_level.ini', {encoding: 'utf8'});
- var expectedContent = fs.readFileSync('test/data/result/multi_level.ini', {encoding: 'utf8'});
- expect(content).to.equal(expectedContent);
- });
- it("Write a file with single and multi level and array definitions", function () {
- var data = {
- section1: {
- key1: {
- subkey1: ['value1', 'value2'],
- subkey2: 'value3'
- },
- key2: ['value4', 'value5']
- }
- };
- MultiIni.write('test/out/array.ini', data);
- var content = fs.readFileSync('test/out/array.ini', {encoding: 'utf8'});
- var expectedContent = fs.readFileSync('test/data/result/array.ini', {encoding: 'utf8'});
- expect(content).to.equal(expectedContent);
- });
- it("Write a file with single and multi level with multi line", function () {
- var data = {
- section1: {
- key1: {
- subkey1: 'line1\nline2',
- subkey2: '\nline2',
- subkey3: '\nline2\n',
- subkey4: 'value1'
- },
- key2: 'line1\nline2',
- key3: '\nline2',
- key4: '\nline2\n',
- key5: 'value2'
- }
- };
- MultiIni.write('test/out/multi_line.ini', data);
- var content = fs.readFileSync('test/out/multi_line.ini', {encoding: 'utf8'});
- var expectedContent = fs.readFileSync('test/data/result/multi_line.ini', {encoding: 'utf8'});
- expect(content).to.equal(expectedContent);
- });
- it("Write a file with single and multi level, multi line and array", function () {
- var data = {
- section1: {
- key1: {
- subkey1: ['line1\nline2', '\nline2', '\nline2\n', 'value1'],
- subkey2: 'value2'
- },
- key2: ['line1\nline2', '\nline2', '\nline2\n', 'value3'],
- key3: 'value4'
- }
- };
- MultiIni.write('test/out/all.ini', data);
- var content = fs.readFileSync('test/out/all.ini', {encoding: 'utf8'});
- var expectedContent = fs.readFileSync('test/data/result/all.ini', {encoding: 'utf8'});
- expect(content).to.equal(expectedContent);
- });
- it("Read a basic file with a section and 2 simple keys and one multiline with keep quotes", function () {
- var data = MultiIni.read('test/data/combined_keep_quotes.ini', {keep_quotes: true});
- expect(data).not.to.be.null;
- expect(data['section1']).to.be.defined;
- expect(data['section1']['key1']).to.equal('"value1"');
- expect(data['section1']['multiline']).to.equal('"line1\nline2\nline3\n"');
- expect(data['section1']['key2']).to.equal('value2');
- });
- it("Read a basic file with a section and 2 simple keys and one multiline with keep quotes and writing it", function () {
- var data = MultiIni.read('test/data/combined_keep_quotes.ini', {keep_quotes: true});
- MultiIni.write('test/out/combined_keep_quotes.ini', data, {keep_quotes: true});
- var content = fs.readFileSync('test/out/combined_keep_quotes.ini', {encoding: 'utf8'});
- var expectedContent = fs.readFileSync('test/data/result/combined_keep_quotes.ini', {encoding: 'utf8'});
- expect(content).to.equal(expectedContent);
- });
- it("Read and writing a file with constants", function () {
- var data = MultiIni.read('test/data/constant.ini');
- expect(data).not.to.be.null;
- expect(data['section']).to.be.defined;
- expect(data['section']['key1']).to.equal('"Part1 " CONSTANT');
- expect(data['section']['key2']).to.equal('CONSTANT " Part2"');
- expect(data['section']['key3']).to.equal('Part1" CONSTANT "Part2');
- MultiIni.write('test/out/constant.ini', data);
- });
- it("Read and writing a file with constants with keeping quotes", function () {
- var data = MultiIni.read('test/data/constant.ini', {keep_quotes: true});
- expect(data).not.to.be.null;
- expect(data['section']).to.be.defined;
- expect(data['section']['key1']).to.equal('"Part1 " CONSTANT');
- expect(data['section']['key2']).to.equal('CONSTANT " Part2"');
- expect(data['section']['key3']).to.equal('"Part1" CONSTANT "Part2"');
- MultiIni.write('test/out/constant_keep.ini', data);
- });
- });
|