aboutsummaryrefslogblamecommitdiffstats
path: root/test/testFuncs1scpp.h
blob: 204f27384847b4ff540ab74097fbc0a0b4e7dbdb (plain) (tree)
































































































































































































                                                                                                                                                         
/*the first line's been intentionally left blank.*/
/***********************************************************************************************************/
/*defines*/
#ifndef TEST1_H
#define TEST1_H

#define FALSE 0
#define TRUE 1

#include "msepoly.h"
#include "mseprimitives.h"
#include <functional>

/***********************************************Global******************************************************/
typedef mse::tdp_variant<mse::CInt, double, mse::mstd::array<char, 20>> uni;
extern uni uni1;

//extern mse::CInt eldiablo = 0;

extern mse::TAnyRandomAccessIterator<mse::CInt> cccc;

//extern cucu;
mse::CInt yetanotherheadervar;

double yetanotherdoubleinsideaheader;
/***********************************************************************************************************/
/*choose the compiler*/
#define COMPILER  GCC

#define HCS12 1U
#define MPC   2U
#define RL78  3U
#define GCC   4U
#define CLANG 5U

/***********************************************************************************************************/
/*options*/

/*this option sets the infinite while loop to see how your tool reacts to it.*/
/*setting it to ON enables it. setting it to anything else disables it but go with OFF for good taste.*/
/*setting this option to ON will practically disable the rest of the tests.*/
#define INF_LOOP FALSE

/*turn on the testing of inline functions*/
#define INLINE FALSE

/***********************************************************************************************************/
/*the compiler's gonna be needing some sorta pragmas to handle some keywords correctly or altogether.*/
/*you need pragmas for inlining, boolean, etc.*/
/*if your compiler needs em, put em here.*/




/***********************************************************************************************************/
#if (HCS12 == COMPILER)
#define blreplacement unsigned char
#endif
#if (MPC == COMPILER)
#define blreplacement unsigned char
#endif
#if (RL78 == COMPILER)
#define blreplacement unsigned char
#endif
#if (GCC == COMPILER)
#define blreplacement unsigned char
#endif

/***********************************************************************************************************/
/*all the test function prototypes are here.*/
void testFuncStatementsinmple (void);
void testFuncStatementComplexIf (void);
void testFuncStatementNotCoverage (void);
void testFuncLoopFor (void);
void testFuncLoopWhile (void);
void testFuncContinue (void);
void testFuncBreak (void);
void testFuncGoto (void);
mse::CInt testFuncNotReturn (mse::CInt a, mse::CInt b);
void testFuncMultiLineStatement (void);
void testFuncMultipleStatement (void);
void testFuncMultipleStatementNot (void);
void testFuncCompOpti1 (void);
void testFuncCompOpti2 (void);
void testFuncCompOpti3 (void);
void testFuncCompOpti4 (void);
void testFuncStatementDecl1 (void);
mse::CInt testFuncStatementInt1 (mse::CInt int1, mse::CInt int2);
blreplacement testFuncStatementbool1 (blreplacement bool1 , blreplacement bool2);
blreplacement testFuncStatementbool2 (blreplacement bool1 , blreplacement bool2);
void testFuncStatementDecision1 (blreplacement decision1 , blreplacement decision2);
void testFuncShortCircuit (blreplacement bool1 , blreplacement bool2);
void testFuncMCDC1 (blreplacement decision1 , blreplacement decision2);
#if (TRUE == INLINE)
void testFuncMultiInstantiation (mse::CInt level);
#endif
void testFuncQMark (mse::CInt int1, mse::CInt int2);
void testFuncCallBool (void);

static void im_a_mlaign_func (void);
static void im_a_benign_func (void);
void im_a_dummy (void);
void im_a_minion_01 (void);
void im_a_minion_02 (void);
static void im_a_minion_03 (void);

#if (TRUE == INLINE)
#if (MPC == COMPILER)
inline void babeFunk (mse::CInt entry);
#endif

#if (HCS12 == COMPILER)
void babeFunk (mse::CInt entry);
#endif
#endif

//test3();
double test4 (mse::CInt aa, mse::CInt bb, double cc);
void test5(void);
void test6(void);
void test7(void);
void test8(void);
void test10(void);
mse::CInt test13(void);
void test15(void);
void test17(void);
void test19(void);
void test20(void);
void test21(void);
void test22(void);
void test23(void);
void test24(void);
void test25(void);
void test26(void);
void test27(void);
void test28(void);
mse::CInt test29(mse::CInt a);
mse::CInt test31(void);

void headerfund(void)
{
  mse::CInt a;
  mse::CInt b;
  mse::CInt sum;
  sum = a + b;
}

template <typename _Ty> using nra_iter = mse::TNullableAnyRandomAccessIterator<_Ty>;

void testfunc9999(void)
{
	mse::TNullableAnyPointer<mse::TNullableAnyPointer<mse::CInt> > p1;
	mse::TNullableAnyPointer<mse::TNullableAnyPointer<mse::TNullableAnyPointer<mse::CInt> > > p2;

  struct s
  {
		mse::TNullableAnyPointer<mse::CInt> sp1;
		mse::TNullableAnyPointer<mse::TNullableAnyPointer<mse::CInt> > sp2;
		mse::TNullableAnyPointer<mse::TNullableAnyPointer<mse::TNullableAnyPointer<mse::CInt> > > sp3;
  };

  mse::TNullableAnyPointer<struct s> ps1;
  /*these two should not be tagged by 18.1 since they are pomse::CInters to an incomplete type. the pomse::CInter is a complete type.*/
  mse::TNullableAnyPointer<mse::TNullableAnyPointer<struct s> > ps2;
  mse::TNullableAnyPointer<mse::TNullableAnyPointer<mse::TNullableAnyPointer<struct s> > > ps3;

  //INTPTR *const* const fedupp1;

  /*
  int ** (*pfunc1)();
  int ** (**pfunc2)();
  int ** (***pfunc3)();
  int *** (**pfunc4)();
  int ** (**pfunc5)(int**, int**);
  int ** (**pfunc6)(int**, int***);
  */
  //template <typename _Ty> using nra_iter = mse::TNullableAnyRandomAccessIterator<_Ty>;
  nra_iter<std::function<nra_iter<nra_iter<mse::CInt> >(void)> > pfunc1;
  nra_iter<nra_iter<std::function<nra_iter<nra_iter<mse::CInt> >(void)> > > pfunc2;
  nra_iter<nra_iter<nra_iter<std::function<nra_iter<nra_iter<mse::CInt> >(void)> > > > pfunc3;
  nra_iter<nra_iter<std::function<nra_iter<nra_iter<nra_iter<mse::CInt> > >(void)> > > pfunc4;
  nra_iter<nra_iter<std::function<nra_iter<nra_iter<mse::CInt> >(nra_iter<nra_iter<mse::CInt> >, nra_iter<nra_iter<mse::CInt> >)> > > pfunc5;
  nra_iter<nra_iter<std::function<nra_iter<nra_iter<mse::CInt> >(nra_iter<nra_iter<mse::CInt> >, nra_iter<nra_iter<nra_iter<mse::CInt> > >)> > > pfunc6;
}

#if 0
void malloc (void);
#endif

#endif
/***********************************************************************************************************/
/*ive been intentionally left blank. dont touch me.*/