From 4f937eca85fc301a328da8c464f5718203966380 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Thu, 13 Apr 2017 10:28:46 +0200
Subject: [PATCH] test normalisation

---
 alib2data/test-src/string/StringTest.cpp | 63 ++++++++++++++++++++++++
 alib2data/test-src/string/StringTest.h   |  6 +++
 2 files changed, 69 insertions(+)

diff --git a/alib2data/test-src/string/StringTest.cpp b/alib2data/test-src/string/StringTest.cpp
index ec2c02aff2..d869e1776f 100644
--- a/alib2data/test-src/string/StringTest.cpp
+++ b/alib2data/test-src/string/StringTest.cpp
@@ -16,6 +16,9 @@
 #include "alphabet/LabeledSymbol.h"
 #include "alphabet/BlankSymbol.h"
 
+#include <primitive/Character.h>
+#include <container/ObjectsSet.h>
+
 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( StringTest, "string" );
 CPPUNIT_TEST_SUITE_REGISTRATION ( StringTest );
 
@@ -97,3 +100,63 @@ void StringTest::testStringInMap ( ) {
 		CPPUNIT_ASSERT ( entry.first.get < string::Epsilon < > > ( ) == string::Epsilon < >::EPSILON );
 	}
 }
+
+void StringTest::testNormalize ( ) {
+	string::LinearString < char > raw ( std::vector < char > { 'a', 'b' } );
+	string::String s1 ( raw );
+	s1.normalize ( );
+	string::String s2 ( raw );
+
+	std::string tmp1 = alib::XmlDataFactory::toString ( s1 );
+	std::cout << tmp1 << std::endl;
+	string::String s1x = alib::XmlDataFactory::fromString ( tmp1 );
+
+	std::string tmp2 = alib::XmlDataFactory::toString ( s2 );
+	std::cout << tmp2 << std::endl;
+	string::String s2x = alib::XmlDataFactory::fromString ( tmp2 );
+
+	CPPUNIT_ASSERT ( s1x == s2x );
+}
+
+void StringTest::testNormalize2 ( ) {
+	string::LinearString < alib::Object > raw ( std::vector < alib::Object > { alib::Object ( 'a' ), alib::Object ( 'b' ) } );
+	string::String s1 ( raw );
+	s1.normalize ( );
+	string::String s2 ( raw );
+
+	std::string tmp1 = alib::XmlDataFactory::toString ( s1 );
+	std::cout << tmp1 << std::endl;
+	string::String s1x = alib::XmlDataFactory::fromString ( tmp1 );
+
+	std::string tmp2 = alib::XmlDataFactory::toString ( s2 );
+	std::cout << tmp2 << std::endl;
+	string::String s2x = alib::XmlDataFactory::fromString ( tmp2 );
+
+	CPPUNIT_ASSERT ( s1 == s1x );
+	CPPUNIT_ASSERT ( s1 == s2x );
+}
+
+void StringTest::testNormalize3 ( ) {
+	string::LinearString < std::set < char > > raw ( std::vector < std::set < char > > { std::set < char > { 'a' }, std::set < char > { 'b' } } );
+	string::String s1 ( raw );
+	s1.normalize ( );
+	string::String s2 ( raw );
+
+	std::string tmp1 = alib::XmlDataFactory::toString ( s1 );
+	std::cout << tmp1 << std::endl;
+	string::String s1x = alib::XmlDataFactory::fromString ( tmp1 );
+
+	std::string tmp2 = alib::XmlDataFactory::toString ( s2 );
+	std::cout << tmp2 << std::endl;
+	string::String s2x = alib::XmlDataFactory::fromString ( tmp2 );
+
+	CPPUNIT_ASSERT ( s1x == s2x );
+
+	string::LinearString < alib::Object > rawRef ( std::vector < alib::Object > { alib::Object ( container::ObjectsSet < alib::Object > ( std::set < alib::Object > { alib::Object ( primitive::Character ( 'a' ) ) } ) ), alib::Object ( container::ObjectsSet < alib::Object > ( std::set < alib::Object > { alib::Object ( primitive::Character ( 'b' ) ) } ) ) } );
+	string::String ref ( rawRef );
+
+	std::cout << s1x << std::endl;
+	std::cout << ref << std::endl;
+
+	CPPUNIT_ASSERT ( s1x == ref );
+}
diff --git a/alib2data/test-src/string/StringTest.h b/alib2data/test-src/string/StringTest.h
index 4eb1b00aab..a3ba48f73e 100644
--- a/alib2data/test-src/string/StringTest.h
+++ b/alib2data/test-src/string/StringTest.h
@@ -9,6 +9,9 @@ class StringTest : public CppUnit::TestFixture
 	CPPUNIT_TEST( testCopyConstruct );
 	CPPUNIT_TEST( testXMLParser );
 	CPPUNIT_TEST( testStringInMap );
+	CPPUNIT_TEST( testNormalize );
+	CPPUNIT_TEST( testNormalize2 );
+	CPPUNIT_TEST( testNormalize3 );
 	CPPUNIT_TEST_SUITE_END();
 
 public:
@@ -18,6 +21,9 @@ public:
 	void testCopyConstruct();
 	void testXMLParser();
 	void testStringInMap();
+	void testNormalize();
+	void testNormalize2();
+	void testNormalize3();
 };
 
 #endif	// STRING_TEST_H_
-- 
GitLab