mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-30 19:52:13 +01:00
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:
parent
ff9bb8dd14
commit
df4eb665b0
21
app/preproc/test/data/foo1.cpp
Normal file
21
app/preproc/test/data/foo1.cpp
Normal 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);
|
||||
}
|
||||
|
3
app/preproc/test/data/foo1.cpp.out
Normal file
3
app/preproc/test/data/foo1.cpp.out
Normal file
@ -0,0 +1,3 @@
|
||||
void setup();
|
||||
void loop();
|
||||
unsigned long getspeed();
|
8
app/preproc/test/data/foo2.cpp
Normal file
8
app/preproc/test/data/foo2.cpp
Normal file
@ -0,0 +1,8 @@
|
||||
void playMessage(prog_uchar* message){
|
||||
|
||||
maxStringSize = sizeof(message); // find message size
|
||||
}
|
||||
|
||||
void loop() {
|
||||
playMessage(signMessage);
|
||||
}
|
2
app/preproc/test/data/foo2.cpp.out
Normal file
2
app/preproc/test/data/foo2.cpp.out
Normal file
@ -0,0 +1,2 @@
|
||||
void playMessage(prog_uchar* message);
|
||||
void loop();
|
19
app/preproc/test/data/foo3.cpp
Normal file
19
app/preproc/test/data/foo3.cpp
Normal 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){
|
||||
;
|
||||
}
|
||||
} */
|
2
app/preproc/test/data/foo3.cpp.out
Normal file
2
app/preproc/test/data/foo3.cpp.out
Normal file
@ -0,0 +1,2 @@
|
||||
void setup();
|
||||
void loop();
|
132
app/preproc/test/data/foo4.cpp
Normal file
132
app/preproc/test/data/foo4.cpp
Normal 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);
|
||||
}
|
||||
}
|
4
app/preproc/test/data/foo4.cpp.out
Normal file
4
app/preproc/test/data/foo4.cpp.out
Normal file
@ -0,0 +1,4 @@
|
||||
void setup();
|
||||
void loop();
|
||||
void OneWireReset(int _1W_Pin);
|
||||
void OneWireOutByte(int _1W_Pin, byte d, byte strong);
|
16
app/preproc/test/data/foo5.cpp
Normal file
16
app/preproc/test/data/foo5.cpp
Normal 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) {
|
||||
}
|
||||
*/
|
2
app/preproc/test/data/foo5.cpp.out
Normal file
2
app/preproc/test/data/foo5.cpp.out
Normal file
@ -0,0 +1,2 @@
|
||||
void setup();
|
||||
void loop();
|
11
app/preproc/test/data/foo6.cpp
Normal file
11
app/preproc/test/data/foo6.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
void setup()
|
||||
{
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
}
|
||||
|
||||
void foo(int x, int y, char *z)
|
||||
{
|
||||
}
|
3
app/preproc/test/data/foo6.cpp.out
Normal file
3
app/preproc/test/data/foo6.cpp.out
Normal file
@ -0,0 +1,3 @@
|
||||
void setup();
|
||||
void loop();
|
||||
void foo(int x, int y, char *z);
|
35
app/preproc/test/data/foo7.cpp
Normal file
35
app/preproc/test/data/foo7.cpp
Normal 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 (
|
||||
|
||||
)
|
||||
|
||||
|
||||
|
||||
{
|
||||
}
|
5
app/preproc/test/data/foo7.cpp.out
Normal file
5
app/preproc/test/data/foo7.cpp.out
Normal file
@ -0,0 +1,5 @@
|
||||
void setup();
|
||||
void
|
||||
loop (
|
||||
|
||||
);
|
5
app/preproc/test/data/t1.cpp
Normal file
5
app/preproc/test/data/t1.cpp
Normal file
@ -0,0 +1,5 @@
|
||||
abc/* def */ghi
|
||||
jkl// mno
|
||||
pqr"stu"vwx
|
||||
#yz
|
||||
123
|
5
app/preproc/test/data/t1.cpp.out
Normal file
5
app/preproc/test/data/t1.cpp.out
Normal file
@ -0,0 +1,5 @@
|
||||
abc ghi
|
||||
jkl
|
||||
pqr vwx
|
||||
|
||||
123
|
1
app/preproc/test/data/t10.cpp
Normal file
1
app/preproc/test/data/t10.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc"d\nef\\\"ghi"jkl//"
|
1
app/preproc/test/data/t10.cpp.out
Normal file
1
app/preproc/test/data/t10.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
1
app/preproc/test/data/t11.cpp
Normal file
1
app/preproc/test/data/t11.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc"d\\nef\\\"ghi"jkl//"
|
1
app/preproc/test/data/t11.cpp.out
Normal file
1
app/preproc/test/data/t11.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
1
app/preproc/test/data/t12.cpp
Normal file
1
app/preproc/test/data/t12.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc"dnef\\\\\"ghi"jkl//"
|
1
app/preproc/test/data/t12.cpp.out
Normal file
1
app/preproc/test/data/t12.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
1
app/preproc/test/data/t13.cpp
Normal file
1
app/preproc/test/data/t13.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc'"'def'"'ghi
|
1
app/preproc/test/data/t13.cpp.out
Normal file
1
app/preproc/test/data/t13.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc def ghi
|
2
app/preproc/test/data/t14.cpp
Normal file
2
app/preproc/test/data/t14.cpp
Normal file
@ -0,0 +1,2 @@
|
||||
# abc /* def
|
||||
ghi */ jkl
|
1
app/preproc/test/data/t14.cpp.out
Normal file
1
app/preproc/test/data/t14.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
jkl
|
1
app/preproc/test/data/t15.cpp
Normal file
1
app/preproc/test/data/t15.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc /* def * ghi */ jkl
|
1
app/preproc/test/data/t15.cpp.out
Normal file
1
app/preproc/test/data/t15.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
1
app/preproc/test/data/t16.cpp
Normal file
1
app/preproc/test/data/t16.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc /* def * ghi **/ jkl
|
1
app/preproc/test/data/t16.cpp.out
Normal file
1
app/preproc/test/data/t16.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
1
app/preproc/test/data/t17.cpp
Normal file
1
app/preproc/test/data/t17.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc /* def ** ghi **/ jkl
|
1
app/preproc/test/data/t17.cpp.out
Normal file
1
app/preproc/test/data/t17.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
3
app/preproc/test/data/t18.cpp
Normal file
3
app/preproc/test/data/t18.cpp
Normal file
@ -0,0 +1,3 @@
|
||||
abc /* def ** ghi ***
|
||||
jkl *
|
||||
* // mno **/ pqr
|
1
app/preproc/test/data/t18.cpp.out
Normal file
1
app/preproc/test/data/t18.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc pqr
|
3
app/preproc/test/data/t2.cpp
Normal file
3
app/preproc/test/data/t2.cpp
Normal file
@ -0,0 +1,3 @@
|
||||
abc // def /*
|
||||
ghi
|
||||
jlk // mno */
|
3
app/preproc/test/data/t2.cpp.out
Normal file
3
app/preproc/test/data/t2.cpp.out
Normal file
@ -0,0 +1,3 @@
|
||||
abc
|
||||
ghi
|
||||
jlk
|
3
app/preproc/test/data/t3.cpp
Normal file
3
app/preproc/test/data/t3.cpp
Normal file
@ -0,0 +1,3 @@
|
||||
// /* // */ "
|
||||
asdf
|
||||
// /* // */ "
|
3
app/preproc/test/data/t3.cpp.out
Normal file
3
app/preproc/test/data/t3.cpp.out
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
asdf
|
||||
|
7
app/preproc/test/data/t4.cpp
Normal file
7
app/preproc/test/data/t4.cpp
Normal file
@ -0,0 +1,7 @@
|
||||
/*
|
||||
abc
|
||||
/*
|
||||
def
|
||||
*/
|
||||
ghi
|
||||
*/
|
3
app/preproc/test/data/t4.cpp.out
Normal file
3
app/preproc/test/data/t4.cpp.out
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
ghi
|
||||
*/
|
1
app/preproc/test/data/t5.cpp
Normal file
1
app/preproc/test/data/t5.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc"def//ghi"jkl
|
1
app/preproc/test/data/t5.cpp.out
Normal file
1
app/preproc/test/data/t5.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
3
app/preproc/test/data/t6.cpp
Normal file
3
app/preproc/test/data/t6.cpp
Normal file
@ -0,0 +1,3 @@
|
||||
abc // def " ghi
|
||||
jkl
|
||||
mno // pqr " stu
|
3
app/preproc/test/data/t6.cpp.out
Normal file
3
app/preproc/test/data/t6.cpp.out
Normal file
@ -0,0 +1,3 @@
|
||||
abc
|
||||
jkl
|
||||
mno
|
1
app/preproc/test/data/t7.cpp
Normal file
1
app/preproc/test/data/t7.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc"def\\"ghi"jkl//"
|
1
app/preproc/test/data/t7.cpp.out
Normal file
1
app/preproc/test/data/t7.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc ghi
|
1
app/preproc/test/data/t8.cpp
Normal file
1
app/preproc/test/data/t8.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc"def\"ghi"jkl
|
1
app/preproc/test/data/t8.cpp.out
Normal file
1
app/preproc/test/data/t8.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
1
app/preproc/test/data/t9.cpp
Normal file
1
app/preproc/test/data/t9.cpp
Normal file
@ -0,0 +1 @@
|
||||
abc"def\\\"ghi"jkl//"
|
1
app/preproc/test/data/t9.cpp.out
Normal file
1
app/preproc/test/data/t9.cpp.out
Normal file
@ -0,0 +1 @@
|
||||
abc jkl
|
5
app/preproc/test/test.sh
Executable file
5
app/preproc/test/test.sh
Executable 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
|
44
app/preproc/test/test_PdePreprocessor.java
Normal file
44
app/preproc/test/test_PdePreprocessor.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user