blob: 07ded38874c339a9cdb61d5b8e9a0c334d701fe8 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <log4cxx/helpers/properties.h>
#include <log4cxx/helpers/fileinputstream.h>
#include "../insertwide.h"
#include "../logunit.h"
using namespace log4cxx;
using namespace log4cxx::helpers;
LOGUNIT_CLASS(PropertiesTestCase)
{
LOGUNIT_TEST_SUITE(PropertiesTestCase);
LOGUNIT_TEST(testLoad1);
LOGUNIT_TEST(testTab1);
LOGUNIT_TEST(testTab2);
LOGUNIT_TEST(testTab3);
LOGUNIT_TEST(testTab4);
LOGUNIT_TEST(testTab5);
LOGUNIT_TEST(testTab6);
LOGUNIT_TEST(testTab7);
LOGUNIT_TEST(testCRLF1);
LOGUNIT_TEST(testEscT1);
LOGUNIT_TEST(testEscT2);
LOGUNIT_TEST(testEscN1);
LOGUNIT_TEST(testEscN2);
LOGUNIT_TEST(testEscR1);
LOGUNIT_TEST(testEscR2);
LOGUNIT_TEST_SUITE_END();
public:
void testLoad1() {
//
// read patternLayout1.properties
FileInputStreamPtr propFile =
new FileInputStream(LOG4CXX_STR("input/patternLayout1.properties"));
Properties properties;
properties.load(propFile);
LogString pattern(properties.getProperty(LOG4CXX_STR("log4j.appender.testAppender.layout.ConversionPattern")));
LOGUNIT_ASSERT_EQUAL((LogString) LOG4CXX_STR("%-5p - %m%n"), pattern);
}
/**
* Test tab as separator between key and value, see LOGCXX-291.
*/
void testTab1() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.tab1")));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("tab delimited")), actual);
}
/**
* Test tab as whitespace before key, see LOGCXX-291.
*/
void testTab2() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.tab2")));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("tab before key")), actual);
}
/**
* Test tab as escaped within key, see LOGCXX-291.
*/
void testTab3() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString key(LOG4CXX_STR("propertiestestcase.tab3"));
key.append(1, 0x09);
LogString actual(properties.getProperty(key));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("key contains tab")), actual);
}
/**
* Test tab after delimitor, see LOGCXX-291.
*/
void testTab4() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.tab4")));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("tab after equals")), actual);
}
/**
* Test tab after continuation in key, see LOGCXX-291.
*/
void testTab5() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.tab5")));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("tab after continue")), actual);
}
/**
* Test tab escaped in value, see LOGCXX-291.
*/
void testTab6() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.tab6")));
LogString expected(1, 0x09);
expected.append(LOG4CXX_STR(" in value"));
LOGUNIT_ASSERT_EQUAL(expected, actual);
}
/**
* Test tab in value continuation, see LOGCXX-291.
*/
void testTab7() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.tab7")));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("continuedvalue")), actual);
}
/**
* Test tab in value continuation, see LOGCXX-292.
*/
void testCRLF1() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.crlf1")));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("continuedvalue")), actual);
}
/**
* Test tab as escaped within key, see LOGCXX-293.
*/
void testEscT1() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString key(LOG4CXX_STR("propertiestestcase.esct1"));
key.append(1, 0x09);
LogString actual(properties.getProperty(key));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("key contains tab")), actual);
}
/**
* Test tab escaped in value, see LOGCXX-293.
*/
void testEscT2() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.esct2")));
LogString expected(1, 0x09);
expected.append(LOG4CXX_STR(" in value"));
LOGUNIT_ASSERT_EQUAL(expected, actual);
}
/**
* Test \n within key, see LOGCXX-293.
*/
void testEscN1() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;;
properties.load(propFile);
LogString key(LOG4CXX_STR("propertiestestcase.escn1"));
key.append(1, 0x0A);
LogString actual(properties.getProperty(key));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("key contains lf")), actual);
}
/**
* Test \n in value, see LOGCXX-293.
*/
void testEscN2() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.escn2")));
LogString expected(1, 0x0A);
expected.append(LOG4CXX_STR(" in value"));
LOGUNIT_ASSERT_EQUAL(expected, actual);
}
/**
* Test \r within key, see LOGCXX-293.
*/
void testEscR1() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString key(LOG4CXX_STR("propertiestestcase.escr1"));
key.append(1, 0x0D);
LogString actual(properties.getProperty(key));
LOGUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("key contains cr")), actual);
}
/**
* Test \r in value, see LOGCXX-293.
*/
void testEscR2() {
FileInputStreamPtr propFile(
new FileInputStream(LOG4CXX_STR("input/propertiestestcase.properties")));
Properties properties;
properties.load(propFile);
LogString actual(properties.getProperty(LOG4CXX_STR("propertiestestcase.escr2")));
LogString expected(1, 0x0D);
expected.append(LOG4CXX_STR(" in value"));
LOGUNIT_ASSERT_EQUAL(expected, actual);
}
};
LOGUNIT_TEST_SUITE_REGISTRATION(PropertiesTestCase);