#!/usr/bin/env python
# -*- coding: utf-8 -*-
# **********************************************************************
#
# Copyright (c) 2003-2016 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.
#
# **********************************************************************


import os, sys, traceback
import Ice

def test(b):
    if not b:
        raise RuntimeError('test assertion failed')
    
class Client(Ice.Application):
    def run(self, args):
        properties = self.communicator().getProperties()
        test(properties.getProperty("Ice.Trace.Network") == "1")
        test(properties.getProperty("Ice.Trace.Protocol") == "1")
        test(properties.getProperty("Config.Path") == "./config/中国_client.config")
        test(properties.getProperty("Ice.ProgramName") == "PropertiesClient")
        test(self.appName() == properties.getProperty("Ice.ProgramName"))


sys.stdout.write("testing load properties from UTF-8 path... ")
sys.stdout.flush()
properties = Ice.createProperties()
properties.load("./config/中国_client.config")
test(properties.getProperty("Ice.Trace.Network") == "1")
test(properties.getProperty("Ice.Trace.Protocol") == "1")
test(properties.getProperty("Config.Path") == "./config/中国_client.config")
test(properties.getProperty("Ice.ProgramName") == "PropertiesClient")
print("ok")
sys.stdout.write("testing load properties from UTF-8 path using Ice::Application... ")
sys.stdout.flush()
c  = Client()
c.main(sys.argv, "./config/中国_client.config")
print("ok")

sys.stdout.write("testing using Ice.Config with multiple config files... ")
sys.stdout.flush()
properties = Ice.createProperties(["--Ice.Config=config/config.1, config/config.2, config/config.3"])
test(properties.getProperty("Config1") == "Config1")
test(properties.getProperty("Config2") == "Config2")
test(properties.getProperty("Config3") == "Config3")
print("ok")

sys.stdout.write("testing configuration file escapes... ")
sys.stdout.flush()
properties = Ice.createProperties(["--Ice.Config=config/escapes.cfg"])

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"};

for k in props.keys():
    test(properties.getProperty(k) == props[k])

print("ok")

sys.exit(0)
