summaryrefslogtreecommitdiff
path: root/js/test/Ice/properties/Client.js
blob: 86e5639e8a09119eceab3a9569d8670f42d9e867 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// **********************************************************************
//
// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

(function(module, require, exports)
{
    var Ice = require("icejs").Ice;
    var Promise = Ice.Promise;

    var test = function(b)
    {
        if(!b)
        {
            throw new Error("test failed");
        }
    };

    var run = function(out)
    {
        return Promise.try(
            function()
            {
                out.write("testing configuration file escapes... ");
                var props =
                    {
                        "Foo\tBar": "3",
                        "Foo\\tBar": "4",
                        "Escape\\ Space": "2",
                        "Prop1": "1",
                        "Prop2": "2",
                        "Prop3": "3",
                        "My Prop1": "1",
                        "My Prop2": "2",
                        "My.Prop1": "a property",
                        "My.Prop2": "a     property",
                        "My.Prop3": "  a     property  ",
                        "My.Prop4": "  a     property  ",
                        "My.Prop5": "a \\ property",
                        "foo=bar": "1",
                        "foo#bar": "2",
                        "foo bar": "3",
                        "A": "1",
                        "B": "2 3 4",
                        "C": "5=#6",
                        "AServer": "\\\\server\\dir",
                        "BServer": "\\server\\dir"
                    };

                var properties = Ice.createProperties();
                if(typeof(require("fs").readFileSync) == "function")
                {
                    //
                    // We are runing with NodeJS we load the properties file from the file system.
                    //
                    properties.parse(require("fs").readFileSync("escapes.cfg", {encoding: "utf8"}));
                    for(var key in props)
                    {
                        test(props[key] == properties.getProperty(key));
                    }
                }
                else
                {
                    //
                    // We are runing in a web browser load the properties file from the web server.
                    //
                    var p = new Promise();
                    /*jshint jquery: true */
                    $.ajax(
                    {
                        url: "escapes.cfg",
                        //
                        // Use text data type to avoid problems interpreting the data.
                        //
                        dataType: "text"
                    }).done(
                        function(data)
                        {
                            properties.parse(data);
                            for(var key in props)
                            {
                                test(props[key] == properties.getProperty(key));
                            }
                            p.succeed();
                        }
                    ).fail(
                        function()
                        {
                            p.fail();
                        });
                    return p;
                }
            }
        ).then(
            function()
            {
                out.writeLine("ok");
            });
    };
    exports.__test__ = run;
}
(typeof(global) !== "undefined" && typeof(global.process) !== "undefined" ? module : undefined,
 typeof(global) !== "undefined" && typeof(global.process) !== "undefined" ? require : window.Ice.__require,
 typeof(global) !== "undefined" && typeof(global.process) !== "undefined" ? exports : window));