auto import from //depot/cupcake/@135843
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..ac4e9f5
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,24 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# embUnit test framework source files
+LOCAL_SRC_FILES :=      \
+    src/AssertImpl.c    \
+    src/RepeatedTest.c  \
+    src/stdImpl.c       \
+    src/TestCaller.c    \
+    src/TestCase.c      \
+    src/TestResult.c    \
+    src/TestRunner.c    \
+    src/TestSuite.c
+
+# Header files path
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/inc
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_MODULE := libembunit
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/MODULE_LICENSE_BSD_LIKE b/MODULE_LICENSE_BSD_LIKE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_BSD_LIKE
diff --git a/inc/AssertImpl.h b/inc/AssertImpl.h
new file mode 100644
index 0000000..de76b21
--- /dev/null
+++ b/inc/AssertImpl.h
@@ -0,0 +1,72 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: AssertImpl.h,v 1.6 2003/09/16 11:09:53 arms22 Exp $
+ */
+#ifndef	__ASSERTIMPL_H__
+#define	__ASSERTIMPL_H__
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+void addFailure(const char *msg, long line, const char *file);	/*TestCase.c*/
+
+void assertImplementationInt(int expected,int actual, long line, const char *file);
+void assertImplementationCStr(const char *expected,const char *actual, long line, const char *file);
+
+#define TEST_ASSERT_EQUAL_STRING(expected,actual)\
+	if (expected && actual && (stdimpl_strcmp(expected,actual)==0)) {} else {assertImplementationCStr(expected,actual,__LINE__,__FILE__);return;}
+
+#define TEST_ASSERT_EQUAL_INT(expected,actual)\
+	if (expected == actual) {} else {assertImplementationInt(expected,actual,__LINE__,__FILE__);return;}
+
+#define TEST_ASSERT_NULL(pointer)\
+	TEST_ASSERT_MESSAGE(pointer == NULL,#pointer " was not null.")
+
+#define TEST_ASSERT_NOT_NULL(pointer)\
+	TEST_ASSERT_MESSAGE(pointer != NULL,#pointer " was null.")
+
+#define TEST_ASSERT_MESSAGE(condition, message)\
+	if (condition) {} else {TEST_FAIL(message);}
+
+#define TEST_ASSERT(condition)\
+	if (condition) {} else {TEST_FAIL(#condition);}
+
+#define TEST_FAIL(message)\
+	if (0) {} else {addFailure(message,__LINE__,__FILE__);return;}
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif/*__ASSERTIMPL_H__*/
diff --git a/inc/HelperMacro.h b/inc/HelperMacro.h
new file mode 100644
index 0000000..533e1be
--- /dev/null
+++ b/inc/HelperMacro.h
@@ -0,0 +1,59 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: HelperMacro.h,v 1.3 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__HELPERMACRO_H__
+#define	__HELPERMACRO_H__
+
+#define EMB_UNIT_TESTCASE(ca,name,sup,tdw,run) \
+	static const TestCase	ca = new_TestCase(name,sup,tdw,run)
+
+#define EMB_UNIT_TESTSUITE(su,name,array) \
+	static const TestSuite	su = new_TestSuite(name,(Test**)array,sizeof(array)/sizeof(array[0]))
+
+#define EMB_UNIT_TESTREFS(tests) \
+	static Test* const tests[] = 
+
+#define EMB_UNIT_ADD_TESTREF(testref) \
+				(Test*)	testref
+
+#define EMB_UNIT_TESTCALLER(caller,name,sup,tdw,fixtures) \
+	static const TestCaller caller = new_TestCaller(name,sup,tdw,sizeof(fixtures)/sizeof(fixtures[0]),(TestFixture*)fixtures)
+
+#define EMB_UNIT_TESTFIXTURES(fixtures) \
+	static const TestFixture	fixtures[] = 
+
+#define EMB_UNIT_REPEATEDTEST(repeater,test,tmrp) \
+	static const RepeatedTest	repeater = new_RepeatedTest(test,tmrp)
+
+#endif/*__HELPERMACRO_H__*/
diff --git a/inc/RepeatedTest.h b/inc/RepeatedTest.h
new file mode 100644
index 0000000..c6b7335
--- /dev/null
+++ b/inc/RepeatedTest.h
@@ -0,0 +1,56 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: RepeatedTest.h,v 1.7 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__REPEATEDTEST_H__
+#define	__REPEATEDTEST_H__
+
+typedef struct __RepeatedTest	RepeatedTest;
+typedef struct __RepeatedTest*	RepeatedTestRef;	/*downward compatible*/
+
+struct __RepeatedTest {
+	TestImplement* isa;
+	Test* test;
+	int timesRepeat;
+};
+
+extern const TestImplement RepeatedTestImplement;
+
+#define	new_RepeatedTest(test,tmrp)\
+	{\
+		(TestImplement*)&RepeatedTestImplement,\
+		(Test*)test,\
+		tmrp,\
+	}
+
+#endif/*__REPEATEDTEST_H__*/
diff --git a/inc/Test.h b/inc/Test.h
new file mode 100644
index 0000000..5705a1c
--- /dev/null
+++ b/inc/Test.h
@@ -0,0 +1,65 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: Test.h,v 1.4 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__TEST_H__
+#define	__TEST_H__
+
+typedef struct __TestResult		TestResult;
+typedef struct __TestResult*	TestResultRef;/*downward compatible*/
+
+typedef struct __TestImplement	TestImplement;
+typedef struct __TestImplement*	TestImplementRef;/*downward compatible*/
+
+typedef char*(*TestNameFunction)(void*);
+typedef void(*TestRunFunction)(void*,TestResult*);
+typedef int(*TestCountTestCasesFunction)(void*);
+
+struct __TestImplement {
+	TestNameFunction name;
+	TestRunFunction run;
+	TestCountTestCasesFunction countTestCases;
+};
+
+typedef struct __Test	Test;
+typedef struct __Test*	TestRef;/*downward compatible*/
+
+struct __Test {
+	TestImplement* isa;
+};
+
+#define Test_name(s)			((Test*)s)->isa->name(s)
+#define Test_run(s,r)			((Test*)s)->isa->run(s,r)
+#define Test_countTestCases(s)	((Test*)s)->isa->countTestCases(s)
+
+#endif/*__TEST_H__*/
diff --git a/inc/TestCaller.h b/inc/TestCaller.h
new file mode 100644
index 0000000..22166b8
--- /dev/null
+++ b/inc/TestCaller.h
@@ -0,0 +1,76 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestCaller.h,v 1.7 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__TESTCALLER_H__
+#define	__TESTCALLER_H__
+
+typedef struct __TestFixture	TestFixture;
+typedef struct __TestFixture*	TestFixtureRef;/*downward compatible*/
+
+struct __TestFixture {
+	char *name;
+	void(*test)(void);
+};
+
+#define new_TestFixture(name,test)\
+	{\
+		name,\
+		test,\
+	}
+
+typedef struct __TestCaller		TestCaller;
+typedef struct __TestCaller*	TestCallerRef;/*downward compatible*/
+
+struct __TestCaller {
+	TestImplement* isa;
+	char *name;
+	void(*setUp)(void);
+	void(*tearDown)(void);
+	int numberOfFixtuers;
+	TestFixture	*fixtuers;
+};
+
+extern const TestImplement TestCallerImplement;
+
+#define new_TestCaller(name,sup,tdw,numberOfFixtuers,fixtuers)\
+	{\
+		(TestImplement*)&TestCallerImplement,\
+		name,\
+		sup,\
+		tdw,\
+		numberOfFixtuers,\
+		fixtuers,\
+	}
+
+#endif/*__TESTCALLER_H__*/
diff --git a/inc/TestCase.h b/inc/TestCase.h
new file mode 100644
index 0000000..bbbd59f
--- /dev/null
+++ b/inc/TestCase.h
@@ -0,0 +1,60 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestCase.h,v 1.7 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__TESTCASE_H__
+#define	__TESTCASE_H__
+
+typedef struct __TestCase	TestCase;
+typedef struct __TestCase*	TestCaseRef;/*compatible embUnit1.0*/
+
+struct __TestCase {
+	TestImplement* isa;
+	char *name;
+	void(*setUp)(void);
+	void(*tearDown)(void);
+	void(*runTest)(void);
+};
+
+extern const TestImplement TestCaseImplement;
+
+#define new_TestCase(name,setUp,tearDown,runTest)\
+	{\
+		(TestImplement*)&TestCaseImplement,\
+		name,\
+		setUp,\
+		tearDown,\
+		runTest,\
+	}
+
+#endif/*__TESTCASE_H__*/
diff --git a/inc/TestListener.h b/inc/TestListener.h
new file mode 100644
index 0000000..404a971
--- /dev/null
+++ b/inc/TestListener.h
@@ -0,0 +1,62 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestListener.h,v 1.4 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__TESTLISTENER_H__
+#define	__TESTLISTENER_H__
+
+typedef struct __TestListnerImplement	TestListnerImplement;
+typedef struct __TestListnerImplement*	TestListnerImplementRef;/*downward compatible*/
+
+typedef void(*TestListnerStartTestCallBack)(void*,void*);
+typedef void(*TestListnerEndTestCallBack)(void*,void*);
+typedef void(*TestListnerAddFailureCallBack)(void*,void*,const char*,int,const char*);
+
+struct __TestListnerImplement {
+	TestListnerStartTestCallBack startTest;
+	TestListnerEndTestCallBack endTest;
+	TestListnerAddFailureCallBack addFailure;
+};
+
+/*typedef struct __TestListner	TestListner;*/	/*->TestResult.h*/
+/*typedef struct __TestListner*	TestListnerRef;*/	/*->TestResult.h*/
+
+struct __TestListner {
+	TestListnerImplement* isa;
+};
+
+#define TestListner_startTest(s,t)			((TestListner*)s)->isa->startTest(s,t)
+#define TestListner_endTest(s,t)			((TestListner*)s)->isa->endTest(s,t)
+#define TestListner_addFailure(s,t,m,l,f)	((TestListner*)s)->isa->addFailure(s,t,m,l,f)
+
+#endif/*__TESTLISTENER_H__*/
diff --git a/inc/TestResult.h b/inc/TestResult.h
new file mode 100644
index 0000000..7ebfb28
--- /dev/null
+++ b/inc/TestResult.h
@@ -0,0 +1,70 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestResult.h,v 1.7 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__TESTRESULT_H__
+#define	__TESTRESULT_H__
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*typedef struct __TestResult		TestResult;*//* -> Test.h*/
+/*typedef struct __TestResult*		TestResultRef;*//* -> Test.h*/
+
+typedef struct __TestListner	TestListner;
+typedef struct __TestListner*	TestListnerRef;/*downward compatible*/
+
+struct __TestResult {
+	unsigned short runCount;
+	unsigned short failureCount;
+	TestListner* listener;
+};
+
+#define new_TestResult(listener)\
+	{\
+		0,\
+		0,\
+		(TestListner*)listener,\
+	}
+
+void TestResult_init(TestResult* self,TestListner* listner);
+void TestResult_startTest(TestResult* self,Test* test);
+void TestResult_endTest(TestResult* self,Test* test);
+void TestResult_addFailure(TestResult* self,Test* test,const char* msg,int line,const char* file);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif/*__TESTRESULT_H__*/
diff --git a/inc/TestRunner.h b/inc/TestRunner.h
new file mode 100644
index 0000000..f709f74
--- /dev/null
+++ b/inc/TestRunner.h
@@ -0,0 +1,50 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestRunner.h,v 1.6 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__TESTRUNNER_H__
+#define	__TESTRUNNER_H__
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+void TestRunner_start(void);
+void TestRunner_runTest(Test* test);
+void TestRunner_end(void);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif/*__TESTRUNNER_H__*/
diff --git a/inc/TestSuite.h b/inc/TestSuite.h
new file mode 100644
index 0000000..ae100ed
--- /dev/null
+++ b/inc/TestSuite.h
@@ -0,0 +1,58 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestSuite.h,v 1.7 2004/02/10 16:19:29 arms22 Exp $
+ */
+#ifndef	__TESTSUITE_H__
+#define	__TESTSUITE_H__
+
+typedef struct __TestSuite	TestSuite;
+typedef struct __TestSuite*	TestSuiteRef;/*downward compatible*/
+
+struct __TestSuite {
+	TestImplement* isa;
+	char *name;
+	int numberOfTests;
+	Test** tests;
+};
+
+extern const TestImplement TestSuiteImplement;
+
+#define new_TestSuite(name,tests,numberOfTests)\
+	{\
+		(TestImplement*)&TestSuiteImplement,\
+		name,\
+		numberOfTests,\
+		tests,\
+	}
+
+#endif/*__TESTSUITE_H__*/
diff --git a/inc/config.h b/inc/config.h
new file mode 100644
index 0000000..2328d3a
--- /dev/null
+++ b/inc/config.h
@@ -0,0 +1,48 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: config.h,v 1.7 2004/02/10 16:17:07 arms22 Exp $
+ */
+#ifndef __CONFIG_H__
+#define __CONFIG_H__
+
+/*	#define NO_STDIO_PRINTF*/
+	#ifdef	NO_STDIO_PRINTF
+		extern void stdimpl_print(const char *string);
+	#else
+		#include<stdio.h>
+		#define stdimpl_print printf
+	#endif
+
+	#define ASSERT_STRING_BUFFER_MAX	64
+
+#endif/*__CONFIG_H__*/
diff --git a/inc/embUnit.h b/inc/embUnit.h
new file mode 100644
index 0000000..2cb4d47
--- /dev/null
+++ b/inc/embUnit.h
@@ -0,0 +1,50 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: embUnit.h,v 1.4 2004/02/10 16:16:19 arms22 Exp $
+ */
+#ifndef	__EMBUNIT_H__
+#define	__EMBUNIT_H__
+
+#include <Test.h>
+#include <TestCase.h>
+#include <TestListener.h>
+#include <TestResult.h>
+#include <TestSuite.h>
+#include <TestRunner.h>
+#include <TestCaller.h>
+#include <RepeatedTest.h>
+#include <stdImpl.h>
+#include <AssertImpl.h>
+#include <HelperMacro.h>
+
+#endif/*__EMBUNIT_H__*/
diff --git a/inc/stdImpl.h b/inc/stdImpl.h
new file mode 100644
index 0000000..f6ce267
--- /dev/null
+++ b/inc/stdImpl.h
@@ -0,0 +1,57 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: stdImpl.h,v 1.4 2004/02/10 16:15:25 arms22 Exp $
+ */
+#ifndef	__STDIMPL_H__
+#define	__STDIMPL_H__
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#ifndef NULL
+#define	NULL	0
+#endif
+
+char* stdimpl_strcpy(char *s1, const char *s2);
+char* stdimpl_strcat(char *dst, const char *src);
+char* stdimpl_strncat(char *dst, const char *src,unsigned int count);
+int stdimpl_strlen(const char *str);
+int stdimpl_strcmp(const char *s1, const char *s2);
+char* stdimpl_itoa(int v,char *string,int r);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif/*__STDIMPL_H__*/
diff --git a/src/AssertImpl.c b/src/AssertImpl.c
new file mode 100644
index 0000000..4698d83
--- /dev/null
+++ b/src/AssertImpl.c
@@ -0,0 +1,100 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: AssertImpl.c,v 1.5 2004/02/10 16:15:25 arms22 Exp $
+ */
+#include "config.h"
+#include "stdImpl.h"
+#include "AssertImpl.h"
+
+void assertImplementationInt(int expected,int actual, long line, const char *file)
+{
+	char buffer[32];	/*"exp -2147483647 was -2147483647"*/
+	char numbuf[12];	/*32bit int decimal maximum column is 11 (-2147483647~2147483647)*/
+
+	stdimpl_strcpy(buffer, "exp ");
+
+	{	stdimpl_itoa(expected, numbuf, 10);
+		stdimpl_strncat(buffer, numbuf, 11);	}
+
+	stdimpl_strcat(buffer, " was ");
+
+	{	stdimpl_itoa(actual, numbuf, 10);
+		stdimpl_strncat(buffer, numbuf, 11);	}
+
+	addFailure(buffer, line, file);
+}
+
+void assertImplementationCStr(const char *expected,const char *actual, long line, const char *file)
+{
+	char buffer[ASSERT_STRING_BUFFER_MAX];
+	#define exp_act_limit ((ASSERT_STRING_BUFFER_MAX-11-1)/2)/*	"exp'' was''" = 11 byte	*/
+	int el;
+	int al;
+
+	if (expected) {
+		el = stdimpl_strlen(expected);
+	} else {
+		el = 4;
+		expected = "null";
+	}
+
+	if (actual) {
+		al = stdimpl_strlen(actual);
+	} else {
+		al = 4;
+		actual = "null";
+	}
+	if (el > exp_act_limit) {
+		if (al > exp_act_limit) {
+			al = exp_act_limit;
+			el = exp_act_limit;
+		} else {
+			int w = exp_act_limit + (exp_act_limit - al);
+			if (el > w) {
+				el = w;
+			}
+		}
+	} else {
+		int w = exp_act_limit + (exp_act_limit - el);
+		if (al > w) {
+			al = w;
+		}
+	}
+	stdimpl_strcpy(buffer, "exp \"");
+	stdimpl_strncat(buffer, expected, el);
+	stdimpl_strcat(buffer, "\" was \"");
+	stdimpl_strncat(buffer, actual, al);
+	stdimpl_strcat(buffer, "\"");
+
+	addFailure(buffer, line, file);
+}
diff --git a/src/NOTICE b/src/NOTICE
new file mode 100644
index 0000000..29defa8
--- /dev/null
+++ b/src/NOTICE
@@ -0,0 +1,24 @@
+Permission is hereby granted, free of charge, to any person obtaining 
+a copy of this software and associated documentation files (the 
+"Software"), to deal in the Software without restriction, including 
+without limitation the rights to use, copy, modify, merge, publish, 
+distribute, and/or sell copies of the Software, and to permit persons 
+to whom the Software is furnished to do so, provided that the above 
+copyright notice(s) and this permission notice appear in all copies 
+of the Software and that both the above copyright notice(s) and this 
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder 
+shall not be used in advertising or otherwise to promote the sale, 
+use or other dealings in this Software without prior written 
+authorization of the copyright holder.
diff --git a/src/RepeatedTest.c b/src/RepeatedTest.c
new file mode 100644
index 0000000..d8b09b8
--- /dev/null
+++ b/src/RepeatedTest.c
@@ -0,0 +1,61 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: RepeatedTest.c,v 1.5 2004/02/10 16:19:29 arms22 Exp $
+ */
+#include "Test.h"
+#include "RepeatedTest.h"
+
+char* RepeatedTest_name(RepeatedTest* self)
+{
+	return Test_name(self->test);
+}
+
+void RepeatedTest_run(RepeatedTest* self,TestResult* result)
+{
+	int i;
+	Test* test = self->test;
+	for (i=0; i<self->timesRepeat; i++) {
+		Test_run(test, result);
+	}
+}
+
+int RepeatedTest_countTestCases(RepeatedTest* self)
+{
+	return Test_countTestCases(self->test) * self->timesRepeat;
+}
+
+const TestImplement RepeatedTestImplement = {
+	(TestNameFunction)			RepeatedTest_name,
+	(TestRunFunction)			RepeatedTest_run,
+	(TestCountTestCasesFunction)RepeatedTest_countTestCases,
+};
diff --git a/src/TestCaller.c b/src/TestCaller.c
new file mode 100644
index 0000000..5ecec9f
--- /dev/null
+++ b/src/TestCaller.c
@@ -0,0 +1,67 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestCaller.c,v 1.6 2004/02/10 16:19:29 arms22 Exp $
+ */
+#include "Test.h"
+#include "TestCase.h"
+#include "TestCaller.h"
+
+char* TestCaller_name(TestCaller* self)
+{
+	return self->name;
+}
+
+void TestCaller_run(TestCaller* self,TestResult* result)
+{
+	TestCase cs = new_TestCase(0,0,0,0);
+	int i;
+	cs.setUp= self->setUp;
+	cs.tearDown	= self->tearDown;
+	for (i=0; i<self->numberOfFixtuers; i++) {
+		cs.name	= self->fixtuers[i].name;
+		cs.runTest	= self->fixtuers[i].test;
+		/*run test*/
+		Test_run(&cs,result);
+	}
+}
+
+int TestCaller_countTestCases(TestCaller* self)
+{
+	return self->numberOfFixtuers;
+}
+
+const TestImplement TestCallerImplement = {
+	(TestNameFunction)			TestCaller_name,
+	(TestRunFunction)			TestCaller_run,
+	(TestCountTestCasesFunction)TestCaller_countTestCases,
+};
diff --git a/src/TestCase.c b/src/TestCase.c
new file mode 100644
index 0000000..6688ca6
--- /dev/null
+++ b/src/TestCase.c
@@ -0,0 +1,82 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestCase.c,v 1.6 2004/02/10 16:19:29 arms22 Exp $
+ */
+#include "Test.h"
+#include "TestCase.h"
+#include "TestResult.h"
+
+static TestResult* result_;
+static TestCase* self_;
+
+char* TestCase_name(TestCase* self)
+{
+	return self->name;
+}
+
+void TestCase_run(TestCase* self,TestResult* result)
+{
+	TestResult_startTest(result, (Test*)self);
+	if (self->setUp) {
+		self->setUp();
+	}
+	if (self->runTest) {
+		TestResult* wr =result_;	/*push*/
+		TestCase* ws = self_;	/*push*/
+		result_ = result;
+		self_ = self;
+		self->runTest();
+		result_ = wr;	/*pop*/
+		self_ = ws;	/*pop*/
+	}
+	if (self->tearDown) {
+		self->tearDown();
+	}
+	TestResult_endTest(result, (Test*)self);
+}
+
+int TestCase_countTestCases(TestCase* self)
+{
+	return 1;
+}
+
+const TestImplement TestCaseImplement = {
+	(TestNameFunction)			TestCase_name,
+	(TestRunFunction)			TestCase_run,
+	(TestCountTestCasesFunction)TestCase_countTestCases,
+};
+
+void addFailure(const char *msg, long line, const char *file)
+{
+	TestResult_addFailure(result_, (Test*)self_, (char*)msg, line, (char*)file);
+}
diff --git a/src/TestResult.c b/src/TestResult.c
new file mode 100644
index 0000000..6006df8
--- /dev/null
+++ b/src/TestResult.c
@@ -0,0 +1,67 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestResult.c,v 1.4 2004/02/10 16:19:29 arms22 Exp $
+ */
+#include "Test.h"
+#include "TestListener.h"
+#include "TestResult.h"
+
+void TestResult_init(TestResult* self,TestListner* listner)
+{
+	self->runCount = 0;
+	self->failureCount = 0;
+	self->listener = listner;
+}
+
+void TestResult_startTest(TestResult* self,Test* test)
+{
+	self->runCount++;
+	if (self->listener) {
+		TestListner_startTest(self->listener, test);
+	}
+}
+
+void TestResult_endTest(TestResult* self,Test* test)
+{
+	if (self->listener) {
+		TestListner_endTest(self->listener, test);
+	}
+}
+
+void TestResult_addFailure(TestResult* self,Test* test,const char* msg,int line,const char* file)
+{
+	self->failureCount++;
+	if (self->listener) {
+		TestListner_addFailure(self->listener, test, msg, line, file);
+	}
+}
diff --git a/src/TestRunner.c b/src/TestRunner.c
new file mode 100644
index 0000000..a6388d0
--- /dev/null
+++ b/src/TestRunner.c
@@ -0,0 +1,111 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestRunner.c,v 1.6 2004/02/10 16:19:29 arms22 Exp $
+ */
+#include "config.h"
+#include "stdImpl.h"
+#include "Test.h"
+#include "TestListener.h"
+#include "TestResult.h"
+#include "TestRunner.h"
+
+static TestResult result_;
+static Test* root_;
+
+static void TestRunner_startTest(TestListner* self,Test* test)
+{
+	stdimpl_print(".");
+}
+
+static void TestRunner_endTest(TestListner* self,Test* test)
+{
+}
+
+static void TestRunner_addFailure(TestListner* self,Test* test,char* msg,int line,char* file)
+{
+	stdimpl_print("\n");
+	stdimpl_print(Test_name(root_));
+	stdimpl_print(".");
+	stdimpl_print(Test_name(test));
+	{
+		char buf[16];
+		stdimpl_print(" (");
+		stdimpl_print(file);
+		stdimpl_print(" ");
+		stdimpl_itoa(line, buf, 10);
+		stdimpl_print(buf);
+		stdimpl_print(") ");
+	}
+	stdimpl_print(msg);
+	stdimpl_print("\n");
+}
+
+static const TestListnerImplement TestRunnerImplement = {
+	(TestListnerStartTestCallBack)	TestRunner_startTest,
+	(TestListnerEndTestCallBack)	TestRunner_endTest,
+	(TestListnerAddFailureCallBack)	TestRunner_addFailure,
+};
+
+static const TestListner testrunner_ = {
+	(TestListnerImplement*)&TestRunnerImplement,
+};
+
+void TestRunner_start(void)
+{
+	TestResult_init(&result_, (TestListner*)&testrunner_);
+}
+
+void TestRunner_runTest(Test* test)
+{
+	root_ = test;
+	Test_run(test, &result_);
+}
+
+void TestRunner_end(void)
+{
+	char buf[16];
+	if (result_.failureCount) {
+		stdimpl_print("\nrun ");
+		stdimpl_itoa(result_.runCount, buf, 10);
+		stdimpl_print(buf);
+		stdimpl_print(" failures ");
+		stdimpl_itoa(result_.failureCount, buf, 10);
+		stdimpl_print(buf);
+		stdimpl_print("\n");
+	} else {
+		stdimpl_print("\nOK (");
+		stdimpl_itoa(result_.runCount, buf, 10);
+		stdimpl_print(buf);
+		stdimpl_print(" tests)\n");
+	}
+}
diff --git a/src/TestSuite.c b/src/TestSuite.c
new file mode 100644
index 0000000..a8899e2
--- /dev/null
+++ b/src/TestSuite.c
@@ -0,0 +1,73 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: TestSuite.c,v 1.5 2004/02/10 16:19:29 arms22 Exp $
+ */
+#include "Test.h"
+#include "TestSuite.h"
+
+char* TestSuite_name(TestSuite* self)
+{
+	return self->name;
+}
+
+void TestSuite_run(TestSuite* self,TestResult* result)
+{
+	int i;
+	Test* test;
+	if (self->tests) {
+		for (i=0; i<self->numberOfTests; i++) {
+			test = self->tests[i];
+			Test_run(test, result);
+		}
+	}
+}
+
+int TestSuite_countTestCases(TestSuite* self)
+{
+	int count = 0;
+	int i;
+	Test* test;
+	if (self->tests) {
+		for (i=0; i<self->numberOfTests; i++) {
+			test = self->tests[i];
+			count += Test_countTestCases(test);
+		}
+	}
+	return count;
+}
+
+const TestImplement TestSuiteImplement = {
+	(TestNameFunction)			TestSuite_name,
+	(TestRunFunction)			TestSuite_run,
+	(TestCountTestCasesFunction)TestSuite_countTestCases,
+};
diff --git a/src/stdImpl.c b/src/stdImpl.c
new file mode 100644
index 0000000..082ebc1
--- /dev/null
+++ b/src/stdImpl.c
@@ -0,0 +1,141 @@
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ * 
+ * Copyright (c) 2003 Embedded Unit Project
+ * 
+ * All rights reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining 
+ * a copy of this software and associated documentation files (the 
+ * "Software"), to deal in the Software without restriction, including 
+ * without limitation the rights to use, copy, modify, merge, publish, 
+ * distribute, and/or sell copies of the Software, and to permit persons 
+ * to whom the Software is furnished to do so, provided that the above 
+ * copyright notice(s) and this permission notice appear in all copies 
+ * of the Software and that both the above copyright notice(s) and this 
+ * permission notice appear in supporting documentation.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * Except as contained in this notice, the name of a copyright holder 
+ * shall not be used in advertising or otherwise to promote the sale, 
+ * use or other dealings in this Software without prior written 
+ * authorization of the copyright holder.
+ *
+ * $Id: stdImpl.c,v 1.3 2004/02/10 16:15:25 arms22 Exp $
+ */
+#include "stdImpl.h"
+
+char* stdimpl_strcpy(char *dst, const char *src)
+{
+	char *start = dst;
+	char c;
+	do {
+		c = *src;
+		*dst = c;
+		src++;
+		dst++;
+	} while (c);
+	return start;
+}
+
+char* stdimpl_strcat(char *dst, const char *src)
+{
+	char *start = dst;
+	char c;
+	do {
+		c = *dst;
+		dst++;
+	} while (c);
+	dst--;
+	do {
+		c = *src;
+		*dst = c;
+		src++;
+		dst++;
+	} while (c);
+	return start;
+}
+
+char* stdimpl_strncat(char *dst, const char *src,unsigned int count)
+{
+	char *start = dst;
+	char c;
+	do {
+		c = *dst;
+		dst++;
+	} while (c);
+	dst--;
+	if (count) {
+		do {
+			c = *src;
+			*dst = c;
+			src++;
+			dst++;
+			count--;
+		} while (c && count);
+		*dst = '\0';
+	}
+	return start;
+}
+
+int stdimpl_strlen(const char *str)
+{
+    const char *estr = str;
+	char c;
+	do {
+		c = *estr;
+		estr++;
+	} while (c);
+    return ((int)(estr - str - 1));
+}
+
+int stdimpl_strcmp(const char *s1, const char *s2)
+{
+	char c1,c2;
+	do {
+		c1 = *s1++;
+		c2 = *s2++;
+	} while ((c1) && (c2) && (c1==c2));
+	return c1 - c2;
+}
+
+static char* _xtoa(unsigned long v,char *string, int r, int is_neg)
+{
+	char *start = string;
+	char buf[33],*p;
+
+	p = buf;
+
+	do {
+		*p++ = "0123456789abcdef"[(v % r) & 0xf];
+	} while (v /= r);
+
+	if (is_neg) {
+		*p++ = '-';
+	}
+
+	do {
+		*string++ = *--p;
+	} while (buf != p);
+
+	*string = '\0';
+
+	return start;
+}
+
+char* stdimpl_itoa(int v,char *string,int r)
+{
+    if ((r == 10) && (v < 0)) {
+		return _xtoa((unsigned long)(-v), string, r, 1);
+	}
+	return _xtoa((unsigned long)(v), string, r, 0);
+}