Adding some test cases for the pre-processor. (Total hack, requires copying and pasting code from the actual app source into another file and running a shell script, but it's better than nothing.)

This commit is contained in:
David A. Mellis 2008-03-15 17:44:42 +00:00
parent ff9bb8dd14
commit df4eb665b0
52 changed files with 379 additions and 0 deletions

View File

@ -0,0 +1,21 @@
int encoder = 4;
unsigned long speed = 0;
void setup()
{
pinMode(encoder, INPUT);
}
void loop()
{
speed = getspeed();
delay(1000);
}
unsigned long getspeed()
{
unsigned long duration = 0;
duration = pulseIn(encoder, HIGH);
return(duration);
}

View File

@ -0,0 +1,3 @@
void setup();
void loop();
unsigned long getspeed();

View File

@ -0,0 +1,8 @@
void playMessage(prog_uchar* message){
maxStringSize = sizeof(message); // find message size
}
void loop() {
playMessage(signMessage);
}

View File

@ -0,0 +1,2 @@
void playMessage(prog_uchar* message);
void loop();

View File

@ -0,0 +1,19 @@
void setup() // run once, when the sketch starts
{
;
}
void loop() // run over and over again
{
;
}
/*
void loop(){
if (1){
;
}
else if(0){
;
}
} */

View File

@ -0,0 +1,2 @@
void setup();
void loop();

View File

@ -0,0 +1,132 @@
//
// Continually measures temperatures at three points using the Dallas DS18B20 on three
// separate Arduino pins.
//
// Uses the parasitic power mode
//
// Displays to a serial LCD operating at 9600 baud.
//
// Arduino Board DS18B20
//
// +5 VDC
// |
// 4.7K
// 8 ---------------- |----- 2 (DQ) Note that terms 1 and 3 are grounded.
//
// 7 ---- same as above
// 6 ---- same as above
//
// Tx ---------------------------- To Serial LCD (LCD #117)
//
// Peter H Anderson, Baltimore, MD, May 5, '07
void setup()
{
int n, dev_channel[3] = {8, 7, 6}, _1W_Pin;
for (n=0; n<1; n++)
{
_1W_Pin = dev_channel[n];
digitalWrite(_1W_Pin, LOW);
pinMode(_1W_Pin, INPUT); // sets the digital pin as input (logic 1)
}
Serial.begin(9600);
delay(100);
Serial.print("?B40"); // set backlight intensity
delay(100);
}
void loop()
{
int n, dev_channel[3] = {8, 7, 6}, _1W_Pin;
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
for (n=0; n<3; n++)
{
_1W_Pin = dev_channel[n];
OneWireReset(_1W_Pin);
OneWireOutByte(_1W_Pin, 0xcc, 0);
OneWireOutByte(_1W_Pin, 0x44, 1); // perform temperature conversion, strong pullup for one sec
OneWireReset(_1W_Pin);
OneWireOutByte(_1W_Pin, 0xcc, 0);
OneWireOutByte(_1W_Pin, 0xbe, 0);
LowByte = OneWireInByte(_1W_Pin);
HighByte = OneWireInByte(_1W_Pin);
TReading = (HighByte << 8) + LowByte;
SignBit = TReading & 0x8000; // test most sig bit
if (SignBit) // negative
{
TReading = (TReading ^ 0xffff) + 1; // 2's comp
}
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
Whole = Tc_100 / 100; // separate off the whole and fractional portions
Fract = Tc_100 % 100;
if (n==0) // if its the first time, clear the LCD
{
Serial.print("?f");
delay(100);
}
if (SignBit) // If its negative
{
Serial.print("-");
}
Serial.print(Whole);
Serial.print(".");
if (Fract < 10)
{
Serial.print("0");
}
Serial.print(Fract);
Serial.print("?n");
}
delay(5000); // 5 second delay. Adjust as necessary
}
void OneWireReset(int _1W_Pin) // reset. Should improve to act as a presence pulse
{
digitalWrite(_1W_Pin, LOW);
pinMode(_1W_Pin, OUTPUT); // bring low for 500 us
delayMicroseconds(500);
pinMode(_1W_Pin, INPUT);
delayMicroseconds(500);
}
void OneWireOutByte(int _1W_Pin, byte d, byte strong) // output byte d (least sig bit first).
{
byte n;
for(n=8; n!=0; n--)
{
if ((d & 0x01) == 1) // test least sig bit
{
digitalWrite(_1W_Pin, LOW);
pinMode(_1W_Pin, OUTPUT);
delayMicroseconds(5);
pinMode(_1W_Pin, INPUT);
delayMicroseconds(60);
}
else
{
digitalWrite(_1W_Pin, LOW);
pinMode(_1W_Pin, OUTPUT);
delayMicroseconds(60);
pinMode(_1W_Pin, INPUT);
}
d=d>>1; // now the next bit is in the least sig bit position.
}
if(strong)
{
digitalWrite(_1W_Pin, HIGH); // One sec of strong +5 VDC
pinMode(_1W_Pin, OUTPUT);
delay(1000);
pinMode(_1W_Pin, INPUT);
digitalWrite(_1W_Pin, LOW);
}
}

View File

@ -0,0 +1,4 @@
void setup();
void loop();
void OneWireReset(int _1W_Pin);
void OneWireOutByte(int _1W_Pin, byte d, byte strong);

View File

@ -0,0 +1,16 @@
void setup()
{
}
void loop()
{
char cmd[16];
int pin;
pin = atoi(&cmd[1]);
}
/*
// convert string to numeric value
int atoi(char *array) {
}
*/

View File

@ -0,0 +1,2 @@
void setup();
void loop();

View File

@ -0,0 +1,11 @@
void setup()
{
}
void loop()
{
}
void foo(int x, int y, char *z)
{
}

View File

@ -0,0 +1,3 @@
void setup();
void loop();
void foo(int x, int y, char *z);

View File

@ -0,0 +1,35 @@
#include "hello" /* for blah */
int x[] = { 1, 2, 3 };
int y[2] = { 1, 2 };
class Foo {
public:
Foo();
Foo(int x);
int bar() { return x; }
private:
int x;
};
Foo::Foo(int x) : x(x) {}
Foo::Foo() {
x = 0;
}
Foo foo(3);
Foo bar = Foo(2);
void setup() {
}
void
loop (
)
{
}

View File

@ -0,0 +1,5 @@
void setup();
void
loop (
);

View File

@ -0,0 +1,5 @@
abc/* def */ghi
jkl// mno
pqr"stu"vwx
#yz
123

View File

@ -0,0 +1,5 @@
abc ghi
jkl
pqr vwx
123

View File

@ -0,0 +1 @@
abc"d\nef\\\"ghi"jkl//"

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1 @@
abc"d\\nef\\\"ghi"jkl//"

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1 @@
abc"dnef\\\\\"ghi"jkl//"

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1 @@
abc'"'def'"'ghi

View File

@ -0,0 +1 @@
abc def ghi

View File

@ -0,0 +1,2 @@
# abc /* def
ghi */ jkl

View File

@ -0,0 +1 @@
jkl

View File

@ -0,0 +1 @@
abc /* def * ghi */ jkl

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1 @@
abc /* def * ghi **/ jkl

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1 @@
abc /* def ** ghi **/ jkl

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1,3 @@
abc /* def ** ghi ***
jkl *
* // mno **/ pqr

View File

@ -0,0 +1 @@
abc pqr

View File

@ -0,0 +1,3 @@
abc // def /*
ghi
jlk // mno */

View File

@ -0,0 +1,3 @@
abc
ghi
jlk

View File

@ -0,0 +1,3 @@
// /* // */ "
asdf
// /* // */ "

View File

@ -0,0 +1,3 @@
asdf

View File

@ -0,0 +1,7 @@
/*
abc
/*
def
*/
ghi
*/

View File

@ -0,0 +1,3 @@
ghi
*/

View File

@ -0,0 +1 @@
abc"def//ghi"jkl

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1,3 @@
abc // def " ghi
jkl
mno // pqr " stu

View File

@ -0,0 +1,3 @@
abc
jkl
mno

View File

@ -0,0 +1 @@
abc"def\\"ghi"jkl//"

View File

@ -0,0 +1 @@
abc ghi

View File

@ -0,0 +1 @@
abc"def\"ghi"jkl

View File

@ -0,0 +1 @@
abc jkl

View File

@ -0,0 +1 @@
abc"def\\\"ghi"jkl//"

View File

@ -0,0 +1 @@
abc jkl

5
app/preproc/test/test.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/sh
javac -classpath ../../../build/shared/lib/oro.jar test_PdePreprocessor.java
for i in data/t*.cpp; do echo $i; java -classpath ../../../build/shared/lib/oro.jar:. test_PdePreprocessor strip $i | diff - $i.out; done
for i in data/foo*.cpp; do echo $i; java -classpath ../../../build/shared/lib/oro.jar:. test_PdePreprocessor prototypes $i | diff - $i.out; done

View File

@ -0,0 +1,44 @@
import java.io.Reader;
import java.io.File;
import java.io.FileReader;
import java.util.List;
import java.util.ArrayList;
import com.oroinc.text.regex.*;
public class test_PdePreprocessor {
/************************************************************************
Paste from PdePreprocessor.java: strip(), collapseBraces(), prototypes()
************************************************************************/
public static void main(String[] args) {
if (args.length < 2) {
System.err.println("Usage: PreProc [strip|prototypes] <file>");
return;
}
try {
test_PdePreprocessor preproc = new test_PdePreprocessor();
Reader reader = new FileReader(new File(args[1]));
StringBuffer buffer = new StringBuffer();
char[] buf = new char[1024];
int n;
while ((n = reader.read(buf, 0, 1024)) != -1) {
buffer.append(buf, 0, n);
}
if (args[0].equals("strip")) {
System.out.print(preproc.strip(buffer.toString()));
} else {
List prototypes = preproc.prototypes(buffer.toString());
for (int i = 0; i < prototypes.size(); i++) {
System.out.println((String) prototypes.get(i));
}
}
} catch (Exception e) {
System.err.println(e);
}
}
}