TEST=../rtest -v

TESTFILES=\
Abs1.mo \
Abs2.mo \
Abs.mo \
Acos.mo \
AddReal1.mo \
Algorithm1.mo \
Algorithm2.mo \
Algorithm3.mo \
AlgorithmElseOpt.mo \
AlgorithmFor1.mo \
AlgorithmFor2.mo \
AlgorithmFor3.mo \
AlgorithmFor4.mo \
AlgorithmFor5.mo \
AlgorithmFor6.mo \
AlgorithmNoRetCall.mo \
And.mo \
Array10.mo \
Array11.mo \
Array12.mo \
Array13.mo \
Array14.mo \
Array15.mo \
Array1.mo \
Array2.mo \
Array3.mo \
Array4.mo \
Array7.mo \
Array8.mo \
Array9.mo \
ArrayAccess.mo \
ArrayAddition.mo \
ArrayAsAliasInExtends.mo \
ArrayAsAlias.mo \
ArrayAssignWholeDim.mo \
ArrayBrackets.mo \
Array_builtin.mo \
ArrayCall.mo \
ArrayCurlyBrackets.mo \
ArrayDeclaration1.mo \
ArrayDeclaration2.mo \
ArrayDeclaration3.mo \
ArrayDeclaration4.mo \
ArrayDeclaration5.mo \
ArrayDivision.mo \
ArrayEWOps1.mo \
ArrayEWOps2.mo \
ArrayEWOps3.mo \
ArrayEWOps4.mo \
ArrayEWOps5.mo \
ArrayEWOpsCEval1.mo \
ArrayEWOpsCEval2.mo \
ArrayEWOpsCEval3.mo \
ArrayEWOpsCEval4.mo \
ArrayEWOpsCEval5.mo \
ArrayExtend.mo \
ArrayExtendsUnknown.mo \
ArrayIndex.mo \
ArrayIndex2.mo \
ArrayInvalidDims.mo \
ArrayMatrixSimplifier.mo \
ArrayModification10.mo \
ArrayModification11.mo \
ArrayModification12.mo \
ArrayModification13.mo \
ArrayModification14.mo \
ArrayModification1.mo \
ArrayModification2.mo \
ArrayModification3.mo \
ArrayModification4.mo \
ArrayModification5.mo \
ArrayModification6.mo \
ArrayModification7.mo \
ArrayModification8.mo \
ArrayModification9.mo \
ArrayMulMatrixSimplifier.mo \
ArrayMultiplication.mo \
ArrayOperators.mo \
ArrayRange.mo \
ArrayReduce2.mo \
ArrayRemoveIndex1.mo \
ArraySizeFromFunc.mo \
ArraySlice1.mo \
ArraySubtraction.mo \
Asin.mo \
AssignmentFunction.mo \
AssignmentFunctionMultiple1.mo \
AssignmentSimple.mo \
Atan2.mo \
Atan.mo \
BlockComponents.mo \
BlockIllegal.mo \
BlockResult.mo \
BlockSimple.mo \
BoolArrayTest.mo \
BooleanLiterals.mo \
Break.mo \
Cardinality.mo \
Ceil.mo \
Circle.mo \
Circuit1.mo \
Class1.mo \
Class2.mo \
Comment1.mo \
Comment2.mo \
ComponentNames.mo \
ComponentNames2.mo \
ComponentNamesRedecl.mo \
CondDeclaration.mo \
ConditionalArrayExpression1.mo \
ConditionalArrayExpression2.mo \
ConditionalComponent.mo \
CondOperators.mo \
Connect12.mo \
Connect13.mo \
Connect14.mo \
Connect15.mo \
Connect16.mo \
Connect1.mo \
Connect2.mo \
Connect4.mo \
Connect5.mo \
Connect6.mo \
Connect7.mo \
Connect8.mo \
Connect9.mo \
ConnectEnumArray.mo \
ConnectFlowEffort.mo \
ConnectHierarchical1.mo \
ConnectHierarchical2.mo \
ConnectInner1.mo \
ConnectInner2.mo \
ConnectInner3.mo \
ConnectInnerOuter2.mo \
ConnectInnerOuter3.mo \
ConnectInnerOuter.mo \
ConnectorComponents.mo \
ConnectorIllegal.mo \
ConnectorSimple.mo \
ConnectTypes.mo \
Constant10.mo \
Constant11.mo \
Constant12.mo \
Constant1.mo \
Constant2.mo \
Constant3.mo \
Constant4.mo \
Constant5.mo \
Constant6.mo \
Constant7.mo \
Constant8.mo \
Constant9.mo \
ConstantDeclConnector.mo \
ConstantDeclRecord.mo \
ConstantDeclType.mo \
ConstantLogicalRelations.mo \
ConstantReductions.mo \
ConstantSize.mo \
ConstrainingType1.mo \
ConstructParameters2.mo \
ConstructParameters.mo \
Cosh.mo \
Cos.mo \
Cross.mo \
CyclicBindingConditional.mo \
CyclicBindingConst.mo \
CyclicBindingParam.mo \
DeclarationEquation1.mo \
DeclarationEquation2.mo \
DeclarationEquation3.mo \
DeclarationOrder1.mo \
DeclarationOrder2.mo \
DeclarationOrder.mo \
DefaultRecordParameters.mo \
Delay2.mo \
Delay3.mo \
Delay4.mo \
Delay5.mo \
Delay6.mo \
Delay7.mo \
Delay.mo \
DependsMutual.mo \
DependsRecursive.mo \
Derivative1.mo \
DerConstant1.mo \
DerConstant2.mo \
DerConstant3.mo \
DiagonalBlock.mo \
Discrete1.mo \
Discrete2.mo \
DiscreteDeclConnector.mo \
DiscreteDeclRecord.mo \
DiscreteDeclType.mo \
DisturbedResistance3.mo \
DisturbedResistance4.mo \
Div.mo \
DocString.mo \
DuplicateElements.mo \
DuplicateElementsEquivalent.mo \
DuplicateElementsNonEquivalent.mo \
DuplicateElementsExtends.mo \
DuplicateElementsExtendsEquivalent.mo \
Each1.mo \
Encapsulated1.mo \
Encapsulated2.mo \
Encapsulated3.mo \
Encapsulated4.mo \
EngineSAAB95Total.mo \
Enum10.mo \
Enum11.mo \
Enum1.mo \
Enum2.mo \
Enum3.mo \
Enum4.mo \
Enum5.mo \
Enum6.mo \
Enum7.mo \
Enum8.mo \
Enum9.mo \
EnumConnectArray.mo \
EnumDimSum.mo \
EnumFor.mo \
EnumInvalidLiteral.mo \
EnumRange.mo \
Equals.mo \
EquationComponent1.mo \
EquationComponent2.mo \
EquationComponent3.mo \
EquationComponent4.mo \
EquationComponent5.mo \
EquationFor1.mo \
EquationFor2.mo \
EquationFor3.mo \
EquationFor4.mo \
EquationFor5.mo \
EquationFor6.mo \
EquationFor7.mo \
EquationIf1.mo \
EquationIf2.mo \
EquationIf3.mo \
EquationIf4.mo \
ErrorMultipleClasses.mo \
EventFunctions.mo \
Exp.mo \
Expressions.mo \
Extends1.mo \
Extends2.mo \
Extends3.mo \
Extends4.mo \
Extends5.mo \
Extends6.mo \
Extends7.mo \
Extends8.mo \
Extends9.mo \
Extends10.mo \
Extends11.mo \
ExtendsModWithImport.mo \
ExternalFunction1.mo \
ExternalFunction2.mo \
ExternalFunction3.mo \
ExternalFunction4.mo \
ExternalFunction5.mo \
ExternalFunction6.mo \
ExternalFunctionAnno.mo \
ExternalFunctionBuiltin.mo \
ExternalFunctionExtends.mo \
Faculty1.mo \
Faculty2.mo \
Faculty3.mo \
Faculty5.mo \
FillSize.mo \
FinalParameterModification.mo \
FixedFinalParameter.mo \
FlexibleShaftNonLinearTotal.mo \
FloatingPoint.mo \
Floor.mo \
FlowDeclConnector.mo \
FlowDeclRecord.mo \
FlowDeclType.mo \
ForceAndTorque.mo \
ForIf.mo \
ForIterator1.mo \
ForIterator2.mo \
ForIterator3.mo \
ForIteratorType.mo \
ForNested.mo \
ForSimple.mo \
Function10.mo \
Function11.mo \
Function12.mo \
Function1.mo \
Function5.mo \
Function5_test.mo \
Function6.mo \
Function7.mo \
Function8.mo \
Function9.mo \
FunctionBreak.mo \
FunctionBubblesort.mo \
FunctionCall.mo \
FunctionDefaultArgs.mo \
FunctionEval1.mo \
FunctionEval2.mo \
FunctionEval3.mo \
FunctionEval4.mo \
FunctionEval6.mo \
FunctionEval7.mo \
FunctionEval8.mo \
FunctionEval9.mo \
FunctionEval10.mo \
FunctionEval11.mo \
FunctionEvalBuiltin.mo \
FunctionEvalSlice.mo \
FunctionProtectedInput.mo \
FunctionReturn.mo \
FunctionSimple.mo \
FunctionSimplex.mo \
FunctionWithEquation.mo \
GreaterThanEqual.mo \
GreaterThan.mo \
IconsRecursiveTest.mo \
IdenticalEquations.mo \
if_then_elseif_else.mo \
IfExpCombiTable1.mo \
IfExpCombiTable2.mo \
IllegalSubscript.mo \
Import1.mo \
Import2.mo \
Import3.mo \
Import4.mo \
Import5.mo \
Import6.mo \
Import7.mo \
Influenza.mo \
InheritanceClassMod.mo \
InheritanceDiamond.mo \
InheritanceMultiple.mo \
InheritanceProtected.mo \
InheritancePublic.mo \
InheritanceSeveral.mo \
InheritanceSimple.mo \
InnerOuter1.mo \
InnerOuter2.mo \
InnerOuterSystem.mo \
InnerOuterWithExtends.mo \
InOutArray2.mo \
InOutArray.mo \
InOutBool.mo \
InputDeclConnector.mo \
InputDeclRecord.mo \
InputDeclType.mo \
IntAdd.mo \
IntDiv.mo \
Integer2Real.mo \
Integer.mo \
IntMul.mo \
IntPow.mo \
IntSub.mo \
InvertedPendulumTotal.mo \
LessThanEqual.mo \
LessThan.mo \
Log10.mo \
Log.mo \
Lookup10.mo \
Lookup1.mo \
Lookup2.mo \
Lookup3.mo \
Lookup4.mo \
Lookup5.mo \
Lookup6.mo \
Lookup7.mo \
Lookup9.mo \
LookupArray.mo \
MathematicalFunctions.mo \
Matrix1.mo \
MatrixAddition.mo \
MatrixBrackets.mo \
MatrixPow.mo\
MatrixRowIndexing.mo \
MaxArray.mo \
MinMax.mo \
ModelAccess.mo \
modelica_1_1_Array9.mo \
modelica_1_1_Function10.mo \
modelica_1_1_Type10.mo \
modelica_1_1_Type9.mo \
ModelSimple.mo \
Modification10.mo \
Modification12.mo \
Modification13.mo \
Modification14.mo \
Modification15.mo \
Modification1.mo \
Modification2.mo \
Modification4.mo \
Modification5.mo \
Modification6.mo \
Modification7.mo \
Modification9.mo \
ModifierClass.mo \
ModifierExtends.mo \
ModifierProblem.mo \
ModifierRedeclare.mo \
ModifierTypeError.mo \
ModifierVariable.mo \
ModifyConstant4.mo \
ModifyConstant5.mo \
ModifyConstant6.mo \
modifyOuter2.mo \
modifyOuter.mo \
ModifyUnknown1.mo \
ModifyUnknown2.mo \
Mod.mo \
MultipleDeclarations2.mo \
MultipleDeclarations.mo \
MyPointsInst1.mo \
MyPointsInst2.mo \
NamedArguments.mo \
NestedClasses.mo \
NoEvent1.mo \
NonConstantReduction.mo \
NonExpArray1.mo \
NonExpArray2.mo \
NonExpArray3.mo \
NotDependsRecursive.mo \
NotEquals.mo \
Not.mo \
NumericFunctions.mo \
Operators.mo \
Or.mo \
OutputDeclConnector.mo \
OutputDeclRecord.mo \
OutputDeclType.mo \
OverrideFinalTest.mo \
Overwriting1.mo \
Overwriting2.mo \
Overwriting3.mo \
Overwriting4.mo \
PackageComponents.mo \
PackageIllegal.mo \
package-s-1.mo \
packages1.mo \
packages2.mo \
PackageSimple.mo \
ParameterDeclConnector.mo \
ParameterDeclRecord.mo \
ParameterDeclType.mo \
Partial1.mo \
PEXPipeTotal.mo \
Philosopher2.mo \
Philosopher.mo \
Pow.mo \
PredefinedTypes.mo \
Protected1.mo \
ProtectedAccess2.mo \
ProtectedAccess.mo \
prtest.mo \
PublicAccess.mo \
Range1.mo \
Real2Integer1.mo \
Real2Integer2.mo \
Real2Integer3.mo \
RealAdd.mo \
RealDiv.mo \
RealMul.mo \
RealPow.mo \
RealSub.mo \
Record1.mo \
RecordAssignment.mo \
RecordConnections.mo \
RecordConstant1.mo \
RecordConstant2.mo \
RecordConstant3.mo \
RecordConstant4.mo \
RecordConstructors.mo \
RecordConstructorVectorization.mo \
RecordNonPublic.mo \
RecordPrefixes.mo \
RecordSimple.mo \
RecursiveFunctionCall.mo \
RecursiveShort.mo \
Reductions.mo \
reinit.mo \
ReinitArray.mo \
Rem.mo \
ScopeDeclaration1.mo \
ScopeDeclaration3.mo \
ScopeModification1.mo \
ScopeModification2.mo \
Sequence.mo \
Shadow1.mo \
ShortClassDef.mo \
Sign.mo \
SimpleInheritance.mo \
SimpleIntegrator1.mo \
SimpleIntegrator2.mo \
SimpleIntegrator3.mo \
SimpleTypeExtend.mo \
Simplify.mo \
Simplify2.mo \
SimplifyBinary.mo \
SimplifyRangeInCall.mo \
Sinh.mo \
Sin.mo \
Skew.mo \
SmallLinsys.mo \
Sqrt.mo \
StaticAssertSuccess.mo \
StringBoolean.mo \
StringConcatenation.mo \
StringConversion.mo \
StringInteger.mo \
StringLiterals.mo \
StringPool.mo \
StringReal.mo \
StructuralParameter1.mo \
SubScript1.mo \
SubScript2.mo \
SubScript3.mo \
Sum.mo \
Switch.mo \
Tanh.mo \
Tan.mo \
Terminal1.mo \
Terminal2.mo \
TestGravityAcceleration.mo \
Transpose2.mo \
Transpose.mo \
tupleSubset.mo \
TupleSingleAssign.mo \
Type10.mo \
Type1.mo \
Type3.mo \
Type4.mo \
Type5.mo \
Type6.mo \
Type7.mo \
Type8.mo \
Type9.mo \
TypeArray.mo \
TypeClass1.mo \
TypeClass2.mo \
TypeDeclArray.mo \
TypeEnumeration.mo \
TypeSimple.mo \
Units2.mo \
UsertypeModifications.mo \
VectorBuiltin.mo \
VectorDimension.mo \
Vectorizable1.mo \
Vectorizable2.mo \
Vectorizable3.mo \
Vectorizable4.mo \
Vectorizable5.mo \
Vectorizable6.mo \
VectorizeExtendedType.mo \
VectorTest.mo \
WhenElseNested.mo \
WhenNested.mo \
WhenNestedEquation.mo \
WhenSemantics1.mo \
While.mo \
WillowForest.mo \

# test that currently fail. Move up when fixed. 
# Run make testfailing
FAILINGTESTFILES=\
InvalidExtends1.mo \
Algorithm4.mo \
Array5.mo \
Array6.mo \
ArrayModification12.mo \
AssignmentFunctionMultiple2.mo \
Connect10.mo \
Connect11.mo \
Connect3.mo \
ConnectConst1.mo \
ConstrainingType2.mo \
ConstrainingType3.mo \
DeclareConstant1.mo \
DeclareConstant2.mo \
DeclareConstant3.mo \
DisturbedResistance1.mo \
DisturbedResistance2.mo \
Faculty4.mo \
FlatParse.mof \
Function2.mo \
Function4.mo \
FunctionEval5.mo \
InheritanceRestrictions.mo \
Inline1.mo \
Inline2.mo \
Inline3.mo \
Inline4.mo \
Inline5.mo \
Inline6.mo \
InnerClass1.mo \
ListTest.mo \
Lookup8.mo \
Match1.mo \
Match2.mo \
Match3.mo \
Match4.mo \
Match5.mo \
Match6.mo \
Match7.mo \
modelica_1_1_Type11.mo \
Modification11.mo \
Modification3.mo \
Modification8.mo \
ModifyConstant1.mo \
ModifyConstant2.mo \
OperatorComponents.mo \
OperatorFunction1.mo \
OperatorFunction2.mo \
OperatorIllegal.mo \
OperatorSimple.mo \
partial-s-1.mo \
partials1.mo \
ReplaceFunction.mo \
ScopeDeclaration2.mo \
ScopeDeclaration4.mo \
SmallPlantModified.mo \
Type2.mo \
Units1.mo \
WaveEquationSample.mo \

DOCFILES=modtest.texi cases.texi VERSION.texi
DISTFILES=$(TESTFILES) VERSION modtest.texi \
	Makefile rtest cases.texi index.html
HTMLFILE=modtest_toc.html

TEXI2DVI=texi2dvi
TEXI2HTML=texi2html -split_chapter
MAKEINFO=makeinfo

VERSION = $(shell cat VERSION)

.PHONY : default
default : modtest.info modtest.ps $(HTMLFILE)

.PHONY : test failingtest

test :
	@echo
	@echo Running tests...
	@echo
	@$(TEST) $(TESTFILES)

failingtest :
	@echo
	@echo Running failing tests...
	@echo
	@$(TEST) $(FAILINGTESTFILES)

keywords :
	$(TEST) -l $(TESTFILES)

modtest.dvi : $(DOCFILES)
	$(TEXI2DVI) $<

modtest.ps : modtest.dvi
	dvips -o $@ $<

modtest.info : $(DOCFILES)
	$(MAKEINFO) $<

$(HTMLFILE) : $(DOCFILES)
	$(TEXI2HTML) $<

cases.texi : $(TESTFILES)
	$(RM) $@
	cases=`$(TEST) -L $(TESTFILES) | sort`; \
	echo "@menu" >> $@; \
	for c in $$cases; do echo "* $$c::" >> $@; done; \
	echo "@end menu" >> $@; \
	set "Test Cases" $$cases ""; \
	while [ "$$2" != "" ] ; do \
		echo ""                 	    >> $@; \
		echo "@node $$2,$$3,$$1,Test Cases" >> $@; \
		echo "@appendixsec $$2" 	    >> $@; \
		echo "@example"         	    >> $@; \
		echo "@include $$2.mo"  	    >> $@; \
		echo "@end example"     	    >> $@; \
		shift ; \
	done

VERSION.texi : VERSION
	sed -e 's/^\(.*\)$$/@set VERSION \1/' < $< > $@

.PHONY : dist
dist : $(DISTFILES)
	mkdir modtest-$(VERSION)
	cp $(DISTFILES) modtest-$(VERSION)
	tar cvf modtest-$(VERSION).tar modtest-$(VERSION)
	gzip -9 modtest-$(VERSION).tar
	$(RM) -r modtest-$(VERSION)
