#include "gtest/gtest.h" #include "../../../OdfFile/Reader/Converter/StarMath2OOXML/cooxml2odf.h" #include "../../../DesktopEditor/xml/include/xmlutils.h" #include "SmartArt.h" struct StMath { StMath(): m_wsSemantic(L""),m_wsAnnotation(L"") {} std::wstring m_wsSemantic; std::wstring m_wsAnnotation; bool operator==(const StMath& stExample) const { return(this->m_wsSemantic == stExample.m_wsSemantic) && (this->m_wsAnnotation == stExample.m_wsAnnotation); } }; TEST(OOXml2OdfTest,MathPara) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMathPara(); if(oReader.FromString(L"1") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"11 "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Math) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L"1") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath stCorrect,stResult; stResult.m_wsSemantic = oTest.GetOdf(); stResult.m_wsAnnotation = oTest.GetAnnotation(); stCorrect.m_wsSemantic = L"1"; stCorrect.m_wsAnnotation = L"1 "; EXPECT_EQ(stResult,stCorrect); } TEST(OOXml2OdfTest,MText) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::COMath* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L"10") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.ConversionVectorWritingElement(pElement->m_arrItems); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"10"; StCorrect.m_wsAnnotation = L"10 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,MTextHard) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::COMath* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 20 2+3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.ConversionVectorWritingElement(pElement->m_arrItems); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"202+3"; StCorrect.m_wsAnnotation = L"20 ` 2 + 3 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,MTextHardAttribute) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::COMath* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 20 2 - 3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.ConversionVectorWritingElement(pElement->m_arrItems); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"202-3"; StCorrect.m_wsAnnotation = L"color red 20 ` color hex ED7D31 2 color hex 70AD47 - color hex 1F4E79 3 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,FractionOver) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CFraction* pElement = new OOX::Logic::CFraction(); if(oReader.FromString(L" 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"12"; StCorrect.m_wsAnnotation = L"{ 1 } over { 2 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,FractionWideslash) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CFraction* pElement = new OOX::Logic::CFraction(); if(oReader.FromString(L" 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"12"; StCorrect.m_wsAnnotation = L"{ 1 } wideslash { 2 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,FractionSlash) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CFraction* pElement = new OOX::Logic::CFraction(); if(oReader.FromString(L" 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"1/2"; StCorrect.m_wsAnnotation = L"{ 1 } / { 2 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,Delimiter) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CDelimiter* pElement = new OOX::Logic::CDelimiter(); if(oReader.FromString(L" 2-3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"[2-3]"; StCorrect.m_wsAnnotation = L"left [ 2 - 3 right ] "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,NaryFromTo) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CNary* pElement = new OOX::Logic::CNary(); if(oReader.FromString(L" 2 1 3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"\u2211213"; StCorrect.m_wsAnnotation = L"sum from {2 } to {1 } 3 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,NaryFrom) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CNary* pElement = new OOX::Logic::CNary(); if(oReader.FromString(L" 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"\u221012"; StCorrect.m_wsAnnotation = L"coprod from {1 } 2 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,NaryOper) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CNary* pElement = new OOX::Logic::CNary(); if(oReader.FromString(L" 10 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"\u22C010"; StCorrect.m_wsAnnotation = L"oper \u22C0 10 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,AccDdot) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CAcc* pElement = new OOX::Logic::CAcc(); if(oReader.FromString(L" 1 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"1\u0308"; StCorrect.m_wsAnnotation = L"ddot 1 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,Matrix) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CMatrix* pElement = new OOX::Logic::CMatrix(); if(oReader.FromString(L" 1 2 3 4 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"1234"; StCorrect.m_wsAnnotation = L"matrix{1 # 2 ## 3 # 4 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,MatrixWithOneColumn) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CMatrix* pElement = new OOX::Logic::CMatrix(); if(oReader.FromString(L" 1 2 3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"123"; StCorrect.m_wsAnnotation = L"matrix{1 ## 2 ## 3 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,Box) { XmlUtils::CXmlLiteReader oReader; OOX::Logic::CBox* pElement = new OOX::Logic::CBox(); if(oReader.FromString(L" 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"12"; StCorrect.m_wsAnnotation = L"{ 1 } over { 2 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,sSup) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CSSup(); if(oReader.FromString(L" 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"12"; StCorrect.m_wsAnnotation = L"1 ^ {2 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,sSub) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CSSub(); if(oReader.FromString(L" 3 4 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"34"; StCorrect.m_wsAnnotation = L"3 _ {4 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,sSubSup) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CSSubSup(); if(oReader.FromString(L" 5 7 6 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"576"; StCorrect.m_wsAnnotation = L"5 _ { 7 } ^ { 6 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,sPre) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CSPre(); if(oReader.FromString(L" 8 9 1 0 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"1098"; StCorrect.m_wsAnnotation = L"10 lsup { 9 } lsub { 8 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,EqArr) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CEqArr(); if(oReader.FromString(L" 1 2 3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"123"; StCorrect.m_wsAnnotation = L"stack{1 # 2 # 3 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,NumBinom) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CFraction(); if(oReader.FromString(L" 4 5 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"45"; StCorrect.m_wsAnnotation = L"binom { 4 } { 5 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,RelationsAndOperations) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 2 \u225D 3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"2\u225D3"; StCorrect.m_wsAnnotation = L"2 def 3 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,Special) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" \u2135 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"\u2135"; StCorrect.m_wsAnnotation = L"aleph "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,LimLow) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CFunc(); if(oReader.FromString(L" lim 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"lim12"; StCorrect.m_wsAnnotation = L""lim" csub { 1 } 2 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,Func) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CFunc(); if(oReader.FromString(L" coth 5 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"coth5"; StCorrect.m_wsAnnotation = L""coth" 5 "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,LimUpp) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CLimUpp; if(oReader.FromString(L" 1 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"1\u23DE2"; StCorrect.m_wsAnnotation = L"1 overbrace { 2 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,LimLowWithGroup) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::CLimLow(); if(oReader.FromString(L" 3 4 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.NodeDefinition(pElement); StMath StCorrect,StResult; StResult.m_wsSemantic = oTest.GetOdf(); StResult.m_wsAnnotation = oTest.GetAnnotation(); StCorrect.m_wsSemantic = L"3\u23DF4"; StCorrect.m_wsAnnotation = L"3 underbrace { 4 } "; EXPECT_EQ(StResult,StCorrect); } TEST(OOXml2OdfTest,Example2) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMathPara(); if(oReader.FromString(L" x = - b \u00B1 b 2 -4 ac 2 a ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"x=-b\xB1b2-4ac2a"x" = { - "b" +- sqrt { "b" ^ {2 } - 4 "ac" } } over { 2a } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Example1) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMathPara(); if(oReader.FromString(L" x+a n = k=0 n n k x k a n-k ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"(x+a)n=\x2211k=0n(nk)xkan-kleft ( "x" + "a" right ) ^ {"n" } "=" sum from {"k" = 0 } to {"n" } left ( binom { "n" } { "k" } right ) "x" ^ {"k" } "a" ^ {"n" - "k" } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Example3) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMathPara(); if(oReader.FromString(L" A=\u03C0 r 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"A=\x3C0r2"A" = %pi "r" ^ {2 } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,LimLowWithRelation) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" lim n\u2192\u221E 1 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"limn\x2192\x221E(1)"lim" csub { "n" toward infinity } left ( 1 right ) "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,HarmonicSeries) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 1 + 1 n n ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"(1+1n)ncolor red ital left ( 1 color hex 70AD47 "+" { 1 } over { "n" } right ) ^ {color red "n" } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Example8) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" sin \u03B1 \u00B1 sin \u03B2 =2 sin 1 2 \u03B1\u00B1\u03B2 cos 1 2 \u03B1\u2213\u03B2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"sin\x3B1\xB1sin\x3B2=2sin12(\x3B1\xB1\x3B2)cos12(\x3B1\x2213\x3B2)"sin" %alpha +- "sin" %beta = 2 "sin" { 1 } over { 2 } left ( %alpha +- %beta right ) "cos" { 1 } over { 2 } left ( %alpha -+ %beta right ) "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Example7) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" a 2 + b 2 = c 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"a2+b2=c2"a" ^ {2 } + "b" ^ {2 } "=" "c" ^ {2 } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Example9) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" cos \u03B1 + cos \u03B2 =2 cos 1 2 \u03B1+\u03B2 cos 1 2 \u03B1-\u03B2 fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"cos\x3B1+cos\x3B2=2cos12(\x3B1+\x3B2)cos12(\x3B1-\x3B2)"cos" %alpha + "cos" %beta = 2 "cos" { 1 } over { 2 } left ( %alpha + %beta right ) "cos" { 1 } over { 2 } left ( %alpha - %beta right ) "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,TextMrPr) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 1+3 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"1+3bold ital 1 bold ital + bold ital 3 "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,ColorByName) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" q b ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"qb{ color midnightblue "q" } over { color orangered "b" } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,EmptyNumerator) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 2 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"\u27512{\u0026lt;\u003F\u0026gt;} over { 2 } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,IdentityMatrixDiagonally) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 1 0 0 0 1 0 0 0 1 ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"100010001bold ital matrix{1 # 0 # 0 ## 0 # 1 # 0 ## 0 # 0 # 1 } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,ExceptionsDiacritics) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 1 2 b abc ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"1\x21942b\x2190abc\x21BC1 csup "\x2194" ` bold ital { 2b } csup "\x2190" ` "abc" csup "\x21BC" "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,ExceptionsGroupChr) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" 1 2b dia ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"\x21941\x21D42b\x21D0diabold ital "\x2194" csup bold ital 1 bold ital "\x21D4" csup 2b bold ital "\x21D0" csup bold ital "dia" "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,EmptyMatrix) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"bold ital matrix{~ # ~ # ~ ## ~ # ~ # ~ ## ~ # ~ # ~ } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,EmptyNary) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"\u2211bold ital sum from {} to {} "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,EmptyRoot) { XmlUtils::CXmlLiteReader oReader; OOX::WritingElement* pElement = new OOX::Logic::COMath(); if(oReader.FromString(L" ") && oReader.ReadNextNode()) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); std::wstring wsOdf = L"bold ital nroot { } { } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); }