Skip to content

Commit

Permalink
Merge branch 'testsuitelibrary' of https://github.com/ricklon/Arduino
Browse files Browse the repository at this point in the history
  • Loading branch information
ricklon committed Nov 10, 2010
2 parents 9b42d2d + 5114d13 commit 0d828a5
Show file tree
Hide file tree
Showing 10 changed files with 1,734 additions and 0 deletions.
715 changes: 715 additions & 0 deletions libraries/ArduinoTestSuite/ArduinoTestSuite.cpp

Large diffs are not rendered by default.

74 changes: 74 additions & 0 deletions libraries/ArduinoTestSuite/ArduinoTestSuite.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
//************************************************************************
//************************************************************************
//* Aug 31, 2010 <MLS> Started on TestArduino
//************************************************************************

#ifndef _AVR_IO_H_
#include <avr/io.h>
#endif

#ifndef WProgram_h
#include "WProgram.h"
#endif
#ifndef HardwareSerial_h
#include "HardwareSerial.h"
#endif


#if defined(USART3_RX_vect)
#define SERIAL_PORT_COUNT 4
#elif defined(USART1_RX_vect)
#define SERIAL_PORT_COUNT 2
#else
#define SERIAL_PORT_COUNT 1
#endif


void ATS_begin(char *manufName, char *testSuiteName);
void ATS_end();

void ATS_PrintTestStatus(char *testString, boolean passed);
boolean ATS_Test_DigitalPin(uint8_t digitalPinToTest);
boolean ATS_Test_PWM_Pin(uint8_t digitalPinToTest);
boolean ATS_Test_AnalogInput(uint8_t analogPintoTest);
boolean ATS_Test_EEPROM(void);

short ATS_TestSerialLoopback(HardwareSerial *theSerialPort, char *serialPortName);


int ATS_GetFreeMemory();

//************************************************************************
//* this has to be an inline function because calling subroutines affects free memory
inline void ATS_ReportMemoryUsage(int _memoryUsageAtStart)
{
int freeMemoryAtEnd;
int lostMemory;
boolean memoryOK;
char memoryUsage[48];

freeMemoryAtEnd = ATS_GetFreeMemory();
lostMemory = _memoryUsageAtStart - freeMemoryAtEnd;
if (lostMemory == 0)
{
strcpy(memoryUsage, "Memory Usage");
memoryOK = true;
}
else
{
sprintf(memoryUsage, "Memory Usage (lost %d bytes)", lostMemory);
memoryOK = false;
}
ATS_PrintTestStatus(memoryUsage, memoryOK);
}



extern unsigned long gTestStartTime;
extern int gYotalErrors;
extern int gTestCount;


#define PASSED true
#define FAILED false

186 changes: 186 additions & 0 deletions libraries/ArduinoTestSuite/avr_cpunames.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
//**************************************************************************************************
//*
//* Atmel AVR CPU name strings
//*
//**************************************************************************************************
//* Sep 19, 2010 <MLS> Started on avr_cpunames.h
//**************************************************************************************************

//#include "avr_cpunames.h"

//**************************************************************************************************


#if defined (__AVR_AT94K__)
#define _AVR_CPU_NAME_ "AT94k"
#elif defined (__AVR_AT43USB320__)
#elif defined (__AVR_AT43USB355__)
#elif defined (__AVR_AT76C711__)
#elif defined (__AVR_AT86RF401__)
#elif defined (__AVR_AT90PWM1__)
#elif defined (__AVR_AT90PWM2__)
#elif defined (__AVR_AT90PWM2B__)
#elif defined (__AVR_AT90PWM3__)
#elif defined (__AVR_AT90PWM3B__)
#elif defined (__AVR_AT90PWM216__)
#elif defined (__AVR_AT90PWM316__)
#elif defined (__AVR_ATmega32C1__)
#elif defined (__AVR_ATmega32M1__)
#elif defined (__AVR_ATmega32U4__)
#define _AVR_CPU_NAME_ "ATmega32U4"
#elif defined (__AVR_ATmega32U6__)
#define _AVR_CPU_NAME_ "ATmega32U6"
#elif defined (__AVR_ATmega128__)
#define _AVR_CPU_NAME_ "Atmega128"
#elif defined (__AVR_ATmega1280__)
#define _AVR_CPU_NAME_ "ATmega1280"
#elif defined (__AVR_ATmega1281__)
#define _AVR_CPU_NAME_ "ATmega1281"
#elif defined (__AVR_ATmega1284P__)
#define _AVR_CPU_NAME_ "ATmega1284"
#elif defined (__AVR_ATmega2560__)
#define _AVR_CPU_NAME_ "ATmega2560"
#elif defined (__AVR_ATmega2561__)
#define _AVR_CPU_NAME_ "ATmega2561"
#elif defined (__AVR_AT90CAN32__)
#define _AVR_CPU_NAME_ "AT90CAN32"
#elif defined (__AVR_AT90CAN64__)
#define _AVR_CPU_NAME_ "AT90CAN64"
#elif defined (__AVR_AT90CAN128__)
#define _AVR_CPU_NAME_ "AT90CAN128"
#elif defined (__AVR_AT90USB82__)
#define _AVR_CPU_NAME_ "AT90USB82"
#elif defined (__AVR_AT90USB162__)
#define _AVR_CPU_NAME_ "AT90USB162"
#elif defined (__AVR_AT90USB646__)
#define _AVR_CPU_NAME_ "AT90USB646"
#elif defined (__AVR_AT90USB647__)
#define _AVR_CPU_NAME_ "AT90USB647"
#elif defined (__AVR_AT90USB1286__)
#define _AVR_CPU_NAME_ "AT90USB1286"
#elif defined (__AVR_AT90USB1287__)
#define _AVR_CPU_NAME_ "AT90USB1287"
#elif defined (__AVR_ATmega64__)
#define _AVR_CPU_NAME_ "ATmega64"
#elif defined (__AVR_ATmega640__)
#define _AVR_CPU_NAME_ "ATmega640"
#elif defined (__AVR_ATmega644__)
#define _AVR_CPU_NAME_ "ATmega644"
#elif defined (__AVR_ATmega644P__)
#define _AVR_CPU_NAME_ "ATmega644P"
#elif defined (__AVR_ATmega645__)
#define _AVR_CPU_NAME_ "ATmega645"
#elif defined (__AVR_ATmega6450__)
#define _AVR_CPU_NAME_ "ATmega6450"
#elif defined (__AVR_ATmega649__)
#define _AVR_CPU_NAME_ "ATmega649"
#elif defined (__AVR_ATmega6490__)
#define _AVR_CPU_NAME_ "ATmega6490"
#elif defined (__AVR_ATmega103__)
#define _AVR_CPU_NAME_ "ATmega103"
#elif defined (__AVR_ATmega32__)
#define _AVR_CPU_NAME_ "Atmega32"
#elif defined (__AVR_ATmega323__)
#define _AVR_CPU_NAME_ "ATmega323"
#elif defined (__AVR_ATmega324P__)
#define _AVR_CPU_NAME_ "ATmega324P"
#elif defined (__AVR_ATmega325__)
#define _AVR_CPU_NAME_ "ATmega325"
#elif defined (__AVR_ATmega325P__)
#define _AVR_CPU_NAME_ "ATmega325P"
#elif defined (__AVR_ATmega3250__)
#define _AVR_CPU_NAME_ "ATmega3250"
#elif defined (__AVR_ATmega3250P__)
#define _AVR_CPU_NAME_ "ATmega3250P"
#elif defined (__AVR_ATmega328P__)
#define _AVR_CPU_NAME_ "ATmega328P"
#elif defined (__AVR_ATmega329__)
#define _AVR_CPU_NAME_ "ATmega329"
#elif defined (__AVR_ATmega329P__)
#define _AVR_CPU_NAME_ "ATmega329P"
#elif defined (__AVR_ATmega3290__)
#define _AVR_CPU_NAME_ "ATmega3290"
#elif defined (__AVR_ATmega3290P__)
#define _AVR_CPU_NAME_ "ATmega3290P"
#elif defined (__AVR_ATmega32HVB__)
#define _AVR_CPU_NAME_ "ATmega32HVB"
#elif defined (__AVR_ATmega406__)
#define _AVR_CPU_NAME_ "ATmega406"
#elif defined (__AVR_ATmega16__)
#define _AVR_CPU_NAME_ "Atmega16"
#elif defined (__AVR_ATmega161__)
#define _AVR_CPU_NAME_ "ATmega161"
#elif defined (__AVR_ATmega162__)
#define _AVR_CPU_NAME_ "ATmega162"
#elif defined (__AVR_ATmega163__)
#define _AVR_CPU_NAME_ "ATmega163"
#elif defined (__AVR_ATmega164P__)
#define _AVR_CPU_NAME_ "ATmega164P"
#elif defined (__AVR_ATmega165__)
#define _AVR_CPU_NAME_ "ATmega165"
#elif defined (__AVR_ATmega165P__)
#define _AVR_CPU_NAME_ "ATmega165P"
#elif defined (__AVR_ATmega168__)
#define _AVR_CPU_NAME_ "ATmega168"
#elif defined (__AVR_ATmega168P__)
#define _AVR_CPU_NAME_ "ATmega168P"
#elif defined (__AVR_ATmega169__)
#define _AVR_CPU_NAME_ "Atmega169"
#elif defined (__AVR_ATmega169P__)
#define _AVR_CPU_NAME_ "ATmega169P"
#elif defined (__AVR_ATmega8HVA__)
#define _AVR_CPU_NAME_ "ATmega8HVA"
#elif defined (__AVR_ATmega16HVA__)
#define _AVR_CPU_NAME_ "ATmega16HVA"
#elif defined (__AVR_ATmega8__)
#define _AVR_CPU_NAME_ "ATmega8"
#elif defined (__AVR_ATmega48__)
#define _AVR_CPU_NAME_ "ATmega48"
#elif defined (__AVR_ATmega48P__)
#define _AVR_CPU_NAME_ "ATmega48P"
#elif defined (__AVR_ATmega88__)
#define _AVR_CPU_NAME_ "ATmega88"
#elif defined (__AVR_ATmega88P__)
#define _AVR_CPU_NAME_ "ATmega88P"
#elif defined (__AVR_ATmega8515__)
#define _AVR_CPU_NAME_ "ATmega8515"
#elif defined (__AVR_ATmega8535__)
#define _AVR_CPU_NAME_ "ATmega8535"
#elif defined (__AVR_AT90S8535__)
#elif defined (__AVR_AT90C8534__)
#elif defined (__AVR_AT90S8515__)
#elif defined (__AVR_AT90S4434__)
#elif defined (__AVR_AT90S4433__)
#elif defined (__AVR_AT90S4414__)
#elif defined (__AVR_ATtiny22__)
#elif defined (__AVR_ATtiny26__)
#elif defined (__AVR_AT90S2343__)
#elif defined (__AVR_AT90S2333__)
#elif defined (__AVR_AT90S2323__)
#elif defined (__AVR_AT90S2313__)
#elif defined (__AVR_ATtiny2313__)
#define _AVR_CPU_NAME_ "ATtiny2313"
#elif defined (__AVR_ATtiny13__)
#elif defined (__AVR_ATtiny13A__)
#elif defined (__AVR_ATtiny25__)
#elif defined (__AVR_ATtiny45__)
#elif defined (__AVR_ATtiny85__)
#elif defined (__AVR_ATtiny24__)
#elif defined (__AVR_ATtiny44__)
#elif defined (__AVR_ATtiny84__)
#elif defined (__AVR_ATtiny261__)
#elif defined (__AVR_ATtiny461__)
#elif defined (__AVR_ATtiny861__)
#elif defined (__AVR_ATtiny43U__)
#elif defined (__AVR_ATtiny48__)
#elif defined (__AVR_ATtiny88__)
#elif defined (__AVR_ATtiny167__)

#else
#error cpu not defined
#endif


#if !defined (_AVR_CPU_NAME_)
// #define _AVR_CPU_NAME_ "UNKNOWN"
#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
//************************************************************************
//* Arduino Test of Arduino Constants
//* (C) 2010 by Rick Anderson
//* Open source as per standard Arduino code
//*
//************************************************************************
//* Oct 16, 2010 <ROA> Test of Arduino Constants
//************************************************************************

#include "WProgram.h"
#include "HardwareSerial.h"
#include <ArduinoTestSuite.h>

//************************************************************************
void setup()
{
int startMemoryUsage;

//Start memory usage must be site prior to ATS_begin
startMemoryUsage = ATS_GetFreeMemory();
ATS_begin("Arduino", "Test of Arduino Constants");
/*
* Test Run Start
*/


//test true constant
ATS_PrintTestStatus("1. Test of true constant", true == 1);

//test false consts
ATS_PrintTestStatus( "2. Test of false constant", false == 0);

//Test of HIGH == 1
ATS_PrintTestStatus( "3. Test of HIGH == 1", HIGH == 1);

//Test of LOW == 0
ATS_PrintTestStatus( "4. Test of LOW == 0", LOW == 0);

//Test of INPUT == 1
ATS_PrintTestStatus( "5. Test of INPUT == 1", HIGH == 1);

//Test of OUTPUT == 0
ATS_PrintTestStatus( "6. Test of OUTPUT == 0", LOW == 0);

//test decimal
ATS_PrintTestStatus( "7. Test of decimal constant", 101 == ((1 * pow(10,2)) + (0 * pow(10,1)) + 1));

//test binary
ATS_PrintTestStatus( "8. Test of binary constant", B101 == 5);

//test octal
ATS_PrintTestStatus( "9. Test of octal constant", 0101 == 65);

//test hexadecimal
ATS_PrintTestStatus( "7. Test of hexadecimal constant", (0x101 == 257));

/*
* Test Run End
*/
ATS_ReportMemoryUsage(startMemoryUsage);
ATS_end();

}


//************************************************************************
void loop()
{


}





Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
//************************************************************************//* Arduino Test Suite//* ATS_ToneTest//* //* Copyright (c) 2010 Mark Sproul All right reserved.//* //* This library is free software; you can redistribute it and/or//* modify it under the terms of the GNU Lesser General Public//* License as published by the Free Software Foundation; either//* version 2.1 of the License, or (at your option) any later version.//* //* This library is distributed in the hope that it will be useful,//* but WITHOUT ANY WARRANTY; without even the implied warranty of//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU//* Lesser General Public License for more details.//* //* You should have received a copy of the GNU Lesser General Public//* License along with this library; if not, write to the Free Software//* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA//************************************************************************//* Aug 31, 2010 <MLS> Started on TestArduino//* Oct 28, 2010 <MLS> Started on Delay//************************************************************************#include "WProgram.h"#include "HardwareSerial.h"#include <ArduinoTestSuite.h>//************************************************************************void setup(){short ii;short testNum;int startMemoryUsage;unsigned long startMillis;unsigned long endMillis;unsigned long deltaMillis;unsigned long errMillis;boolean passed;char testNameString[80]; startMemoryUsage = ATS_GetFreeMemory(); ATS_begin("Arduino", "DelayTest"); testNum = 1; //* we start at 2 because 0/1 are RXD/TXD for (ii=0; ii<1000; ii+= 15) { startMillis = millis(); delay(ii); endMillis = millis(); deltaMillis = endMillis - startMillis; if (deltaMillis >= ii) { errMillis = deltaMillis - ii; } else { errMillis = ii - deltaMillis; } if (errMillis <= 1) { passed = true; } else { passed = false; } sprintf(testNameString, "DelayTest.%02d (delay= %4d actual delay=%ld err=%ld)", testNum, ii, deltaMillis, errMillis); ATS_PrintTestStatus(testNameString, passed); testNum++; } ATS_ReportMemoryUsage(startMemoryUsage); ATS_end();}//************************************************************************void loop(){}
Expand Down
Loading

0 comments on commit 0d828a5

Please sign in to comment.