Skip to content

Commit 83f57ae

Browse files
committed
Adding test
1 parent 271f997 commit 83f57ae

File tree

4 files changed

+113
-0
lines changed

4 files changed

+113
-0
lines changed

test/Test.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import java.io.FileInputStream;
2+
import java.io.IOException;
3+
import java.io.InputStream;
4+
import java.util.Properties;
5+
import java.util.TreeMap;
6+
import java.util.concurrent.atomic.AtomicInteger;
7+
8+
public class Test {
9+
public static void main(String[] args) {
10+
try (InputStream inputStream = new FileInputStream("test.properties")) {
11+
Properties properties = new Properties();
12+
properties.load(inputStream);
13+
TreeMap<String, String> orderedProperties = new TreeMap<>();
14+
properties.forEach((key, value) -> orderedProperties.put((String) key, (String) value));
15+
System.out.println("{");
16+
final AtomicInteger counter = new AtomicInteger(1);
17+
orderedProperties.forEach((key, value) -> System.out.format(" \"%s\": \"%s\"%s%n", key, value,
18+
(counter.getAndIncrement() == orderedProperties.size()) ? "" : ", "));
19+
System.out.println("}");
20+
} catch (IOException e) {
21+
e.printStackTrace();
22+
}
23+
}
24+
}

test/test.properties

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
test-colon-separator-1:colon-separator-1
2+
test-colon-separator-2 :colon-separator-2
3+
test-colon-separator-3: colon-separator-3
4+
test-colon-separator-4 : colon-separator-4
5+
test-colon-separator-5 : colon-separator-5
6+
test-colon-separator-6 : colon-separator-6
7+
test-colon-separator-7 : colon-separator-7
8+
test-equals-separator-1=equals-separator-1
9+
test-equals-separator-2 =equals-separator-2
10+
test-equals-separator-3= equals-separator-3
11+
test-equals-separator-4 = equals-separator-4
12+
test-equals-separator-5 = equals-separator-5
13+
test-equals-separator-6 = equals-separator-6
14+
test-equals-separator-7 = equals-separator-7
15+
test-space-separator-1 space-separator-1
16+
test-space-separator-2 space-separator-2
17+
test-space-separator-3 space-separator-3
18+
test-tab-separator-1 tab-separator-1
19+
test-tab-separator-2 tab-separator-2
20+
test-tab-separator-3 tab-separator-3
21+
test-tab-separator-4 tab-separator-4
22+
test-tab-separator-5 tab-separator-5
23+
test-tab-separator-6 tab-separator-6
24+
test-tab-separator-7 tab-separator-7
25+
test-formfeed-separator-1 formfeed-separator-1
26+
test-formfeed-separator-2 formfeed-separator-2
27+
test-formfeed-separator-3 formfeed-separator-3
28+
test-formfeed-separator-4 formfeed-separator-4
29+
test-formfeed-separator-5 formfeed-separator-5
30+
test-formfeed-separator-6 formfeed-separator-6
31+
test-formfeed-separator-7 formfeed-separator-7
32+
test-mixed-separators-1=: mixed-separators-1
33+
test-mixed-separators-2= :mixed-separators-2
34+
test-mixed-separators-3 =:mixed-separators-3
35+
test-mixed-separators-4 :=mixed-separators-4
36+
test-mixed-separators-5:= mixed-separators-5
37+
test-mixed-separators-6: =mixed-separators-6

test/test.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import jprops
2+
import json
3+
import collections
4+
5+
props = jprops.getJavaProperties(open("test.properties"))
6+
ordered_props = collections.OrderedDict(sorted(props.items()))
7+
print json.dumps(ordered_props, indent=1)

test/test.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/bash
2+
3+
# Test helper script for jprops
4+
#
5+
# Kishan Thomas <kishan.thomas@gmail.com>
6+
7+
RED='\033[0;31m'
8+
GREEN='\033[0;32m'
9+
NC='\033[0m' # No Color
10+
11+
# Import jprops from parent folder
12+
export PYTHONPATH="../:$PYTHONPATH"
13+
14+
# The expected properties
15+
PROPERTY_COUNT=$(wc -l test.properties|awk '{ print $1}')
16+
17+
# Use Java and get all the properties ordered by key from test.properties
18+
javac Test.java
19+
java Test > java.props.out
20+
# Use Python jprops and get all the properties ordered by key from test.properties
21+
python test.py > python.props.out
22+
23+
JAVA_COUNT=$( expr $(wc -l java.props.out|awk '{ print $1}') - 2 )
24+
PYTHON_COUNT=$( expr $(wc -l python.props.out|awk '{ print $1}') - 2 )
25+
26+
# Check both Java and Python jprops found the same number of properties from the same test.properties
27+
echo "Expected $PROPERTY_COUNT, Java found $JAVA_COUNT, Python jprops found $PYTHON_COUNT"
28+
29+
if [ $JAVA_COUNT != $PROPERTY_COUNT ] || [ $PYTHON_COUNT != $PROPERTY_COUNT ]
30+
then
31+
diff java.props.out python.props.out
32+
echo -e "${RED}Test Fail: The properties count $JAVA_COUNT (Java) and/or $PYTHON_COUNT (jprops) do not match the expected count $PROPERTY_COUNT ${NC}"
33+
exit 1
34+
else
35+
echo -e "${GREEN}Test Pass: The properties count $PYTHON_COUNT match the expected count $PROPERTY_COUNT ${NC}"
36+
fi
37+
38+
# Both outputs are ordered by key and formatted in matching format (json)
39+
# So a simple diff can find if they both match TODO: Use a json tool for matching
40+
if diff java.props.out python.props.out; then
41+
echo -e "${GREEN}Test Pass: All $PROPERTY_COUNT properties match${NC}"
42+
else
43+
echo -e "${RED}Test Fail: Not all $PROPERTY_COUNT properties match${NC}"
44+
exit 1
45+
fi

0 commit comments

Comments
 (0)