Commit b7047f44 authored by jds2's avatar jds2

- Added ability to deactivate suite/tests dynamically.

- Removed constraint that suite/test names be unique.
- Added lookup functions to TestDB.[ch]
- Modified docs and internal unit tests for these changes.
- Moved doxygen comments for public functions to headers.  This will make them more accessible to clients without having to generate doxygen docs.


git-svn-id: http://svn.code.sf.net/p/cunit/code/trunk@98 f00e6729-6848-4c17-8bfb-678c97c00071
parent e1216d3e
/*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004,2005,2006 Anil Kumar, Jerry St.Clair
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......@@ -74,12 +74,14 @@ typedef enum {
CUE_SINIT_FAILED = 22, /**< Suite initialization failed. */
CUE_SCLEAN_FAILED = 23, /**< Suite cleanup failed. */
CUE_DUP_SUITE = 24, /**< Duplicate suite name not allowed. */
CUE_SUITE_INACTIVE = 25, /**< Test run initiated for an inactive suite. */
/* Test Case Level Errors */
CUE_NOTEST = 30, /**< A required CU_pTest pointer was NULL. */
CUE_NOTEST = 30, /**< A required CU_pTest or CU_TestFunc pointer was NULL. */
CUE_NO_TESTNAME = 31, /**< Required CU_Test name not provided. */
CUE_DUP_TEST = 32, /**< Duplicate test case name not allowed. */
CUE_TEST_NOT_IN_SUITE = 33, /**< Test not registered in specified suite. */
CUE_TEST_INACTIVE = 34, /**< Test run initiated for an inactive test. */
/* File handling errors */
CUE_FOPEN_FAILED = 40, /**< An error occurred opening a file. */
......@@ -110,16 +112,79 @@ extern "C" {
#endif
CU_EXPORT CU_ErrorCode CU_get_error(void);
/**<
* Retrieves the current CUnit framework error code.
* CUnit implementation functions set the error code to indicate the
* status of the most recent operation. In general, the CUnit functions
* will clear the code to CUE_SUCCESS, then reset it to a specific error
* code if an exception condition is encountered. Some functions
* return the code, others leave it to the user to inspect if desired.
*
* @return The current error condition code.
* @see CU_get_error_msg()
* @see CU_ErrorCode
*/
CU_EXPORT const char* CU_get_error_msg(void);
/**<
* Retrieves a message corresponding to the current framework error code.
* CUnit implementation functions set the error code to indicate the
* of the most recent operation. In general, the CUnit functions will
* clear the code to CUE_SUCCESS, then reset it to a specific error
* code if an exception condition is encountered. This function allows
* the user to retrieve a descriptive error message corresponding to the
* error code set by the last operation.
*
* @return A message corresponding to the current error condition.
* @see CU_get_error()
* @see CU_ErrorCode
*/
CU_EXPORT void CU_set_error_action(CU_ErrorAction action);
/**<
* Sets the action to take when a framework error condition occurs.
* This function should be used to specify the action to take
* when an error condition is encountered. The default action is
* CUEA_IGNORE, which results in errors being ignored and test runs
* being continued (if possible). A value of CUEA_FAIL causes test
* runs to stop as soon as an error condition occurs, while
* CU_ABORT causes the application to exit on any error.
*
* @param action CU_ErrorAction indicating the new error action.
* @see CU_get_error_action()
* @see CU_set_error()
* @see CU_ErrorAction
*/
CU_EXPORT CU_ErrorAction CU_get_error_action(void);
/**<
* Retrieves the current framework error action code.
*
* @return The current error action code.
* @see CU_set_error_action()
* @see CU_set_error()
* @see CU_ErrorAction
*/
#ifdef CUNIT_BUILD_TESTS
void test_cunit_CUError(void);
#endif
/* Internal function - users should not generally call this function */
void CU_set_error(CU_ErrorCode error);
CU_EXPORT void CU_set_error(CU_ErrorCode error);
/**<
* Sets the CUnit framework error code.
* This function is used internally by CUnit implementation functions
* when an error condition occurs within the framework. It should
* not generally be called by user code. NOTE that if the current
* error action is CUEA_ABORT, then calling this function will
* result in exit() being called for the current application.
*
* @param error CU_ErrorCode indicating the current error condition.
* @see CU_get_error()
* @see CU_get_error_msg()
* @see CU_ErrorCode
*/
#ifdef __cplusplus
}
......
......@@ -83,7 +83,7 @@
#define CU_UNREFERENCED_PARAMETER(x) (void)x
#endif
#ifdef WIN32
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) || defined(__WIN32__)
# ifdef CU_DLL
# ifdef CU_BUILD_DLL
# define CU_EXPORT __declspec(dllexport)
......@@ -93,6 +93,9 @@
# else
# define CU_EXPORT
# endif
# ifdef _MSC_VER
# define snprintf _snprintf
# endif
#else
# define CU_EXPORT
#endif
......
/*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004,2005,2006 Anil Kumar, Jerry St.Clair
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......
This diff is collapsed.
This diff is collapsed.
/*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004,2005,2006 Anil Kumar, Jerry St.Clair
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......@@ -30,6 +30,12 @@
* 20-Jul-2004 New interface, support for deprecated version 1 names. (JDS)
*
* 5-Sep-2004 Added internal test interface. (JDS)
*
* 17-Apr-2006 Added CU_translated_strlen().
* Removed CUNIT_MAX_STRING_LENGTH - dangerous since not enforced.
* Fixed off-by-1 error in CU_translate_special_characters(),
* modifying implementation & results in some cases. User can
* now tell if conversion failed. (JDS)
*/
/** @file
......@@ -48,17 +54,74 @@
extern "C" {
#endif
/** Maximum string length. */
#define CUNIT_MAX_STRING_LENGTH 1024
/** maximum number of characters in a translated xml entity. */
#define CUNIT_MAX_ENTITY_LEN 5
/**< Maximum number of characters in a translated xml entity. */
CU_EXPORT int CU_translate_special_characters(const char* szSrc, char* szDest, size_t maxlen);
CU_EXPORT int CU_compare_strings(const char* szSrc, const char* szDest);
CU_EXPORT size_t CU_translate_special_characters(const char *szSrc, char *szDest, size_t maxlen);
/**<
* Converts special characters in szSrc to xml entity codes and stores
* result in szDest. Currently conversion of '&', '<', and '>' is supported.
* Note that conversion to entities increases the length of the converted
* string. The greatest conversion size increase would be a string
* consisting entirely of entity characters of converted length
* CUNIT_MAX_ENTITY_LEN. Neither szSrc nor szDest may be NULL
* (checked by assertion).<br /><br />
*
* maxlen gives the maximum number of characters in the translated string.
* If szDest does not have enough room to hold the converted string, the
* return value will be zero and szDest will contain an empty string.
* If this occurs, the remaining characters in szDest may be overwritten
* in an unspecified manner. It is the caller's responsibility to make
* sure there is sufficient room in szDest to hold the converted string.
* CU_translated_strlen() may be used to calculate the length of buffer
* required (remembering to add 1 for the terminating \0).
*
* @param szSrc Source string to convert (non-NULL).
* @param szDest Location to hold the converted string (non-NULL).
* @param maxlen Maximum number of characters szDest can hold.
* @return The number of special characters converted (always 0 if
* szDest did not have enough room to hold converted string).
*/
CU_EXPORT void CU_trim_left(char* szString);
CU_EXPORT void CU_trim_right(char* szString);
CU_EXPORT void CU_trim(char* szString);
CU_EXPORT size_t CU_translated_strlen(const char *szSrc);
/**<
* Calculates the length of a translated string.
* This function calculates the buffer length required to hold a string
* after processing with CU_translate_special_characters(). The returned
* length does not include space for the terminating '\0' character.
* szSrc may not be NULL (checked by assertion).
*
* @param szSrc Source string to analyze (non-NULL).
* @return The number of characters szSrc will expand to when converted.
*/
CU_EXPORT int CU_compare_strings(const char *szSrc, const char *szDest);
/**<
* Case-insensitive string comparison. Neither string pointer
* can be NULL (checked by assertion).
*
* @param szSrc 1st string to compare (non-NULL).
* @param szDest 2nd string to compare (non-NULL).
* @return 0 if the strings are equal, non-zero otherwise.
*/
CU_EXPORT void CU_trim_left(char *szString);
/**<
* Trim leading whitespace from the specified string.
* @param szString The string to trim.
*/
CU_EXPORT void CU_trim_right(char *szString);
/**<
* Trim trailing whitespace from the specified string.
* @param szString The string to trim.
*/
CU_EXPORT void CU_trim(char *szString);
/**<
* Trim leading and trailing whitespace from the specified string.
* @param szString The string to trim.
*/
#ifdef CUNIT_BUILD_TESTS
void test_cunit_Util(void);
......@@ -69,17 +132,19 @@ void test_cunit_Util(void);
#endif
#ifdef USE_DEPRECATED_CUNIT_NAMES
/** Deprecated (version 1). @deprecated Use CU_translate_special_characters(). */
#define CUNIT_MAX_STRING_LENGTH 1024
/**< Maximum string length. */
#define translate_special_characters(src, dest, len) CU_translate_special_characters(src, dest, len)
/** Deprecated (version 1). @deprecated Use CU_compare_strings(). */
/**< Deprecated (version 1). @deprecated Use CU_translate_special_characters(). */
#define compare_strings(src, dest) CU_compare_strings(src, dest)
/**< Deprecated (version 1). @deprecated Use CU_compare_strings(). */
/** Deprecated (version 1). @deprecated Use CU_trim_left(). */
#define trim_left(str) CU_trim_left(str)
/** Deprecated (version 1). @deprecated Use CU_trim_right(). */
/**< Deprecated (version 1). @deprecated Use CU_trim_left(). */
#define trim_right(str) CU_trim_right(str)
/** Deprecated (version 1). @deprecated Use CU_trim(). */
/**< Deprecated (version 1). @deprecated Use CU_trim_right(). */
#define trim(str) CU_trim(str)
/**< Deprecated (version 1). @deprecated Use CU_trim(). */
#endif /* USE_DEPRECATED_CUNIT_NAMES */
......
......@@ -54,6 +54,7 @@
#include "CUnit.h"
#include "TestDB.h"
#include "MyMem.h"
#include "Util.h"
#include "TestRun.h"
#include "Automated.h"
......@@ -275,6 +276,9 @@ static void automated_test_complete_message_handler(const CU_pTest pTest,
const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
char *szTemp = NULL;
size_t szTemp_len = 0;
size_t cur_len = 0;
CU_pFailureRecord pTempFailure = pFailure;
CU_UNREFERENCED_PARAMETER(pSuite); /* pSuite is not used except in assertion */
......@@ -285,16 +289,29 @@ static void automated_test_complete_message_handler(const CU_pTest pTest,
if (NULL != pTempFailure) {
/* worst cast is a string of special chars */
char szTemp[CUNIT_MAX_ENTITY_LEN * CUNIT_MAX_STRING_LENGTH];
while (NULL != pTempFailure) {
assert((NULL != pTempFailure->pSuite) && (pTempFailure->pSuite == pSuite));
assert((NULL != pTempFailure->pTest) && (pTempFailure->pTest == pTest));
/* expand temporary char buffer if need more room */
if (NULL != pTempFailure->strCondition) {
CU_translate_special_characters(pTempFailure->strCondition, szTemp, sizeof(szTemp));
cur_len = CU_translated_strlen(pTempFailure->strCondition) + 1;
}
else {
cur_len = 1;
}
if (cur_len > szTemp_len) {
szTemp_len = cur_len;
if (NULL != szTemp) {
CU_FREE(szTemp);
}
szTemp = (char *)CU_MALLOC(szTemp_len);
}
/* convert xml entities in strCondition (if present) */
if (NULL != pTempFailure->strCondition) {
CU_translate_special_characters(pTempFailure->strCondition, szTemp, szTemp_len);
}
else {
szTemp[0] = '\0';
......@@ -325,6 +342,10 @@ static void automated_test_complete_message_handler(const CU_pTest pTest,
" </CUNIT_RUN_TEST_RECORD> \n",
(NULL != pTest->pName) ? pTest->pName : "");
}
if (NULL != szTemp) {
CU_FREE(szTemp);
}
}
/*------------------------------------------------------------------------*/
......
/*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004,2005,2006 Anil Kumar, Jerry St.Clair
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......@@ -37,33 +37,26 @@
#include "CUError.h"
/*
* Global/Static Definitions
*/
/*=================================================================
* Global/Static Definitions
*=================================================================*/
/** Local variable holding the current error code. */
static CU_ErrorCode g_error_number = CUE_SUCCESS;
/** Local variable holding the current error action code. */
static CU_ErrorAction g_error_action = CUEA_IGNORE;
/* Private function forward declarations */
/*=================================================================
* Private function forward declarations
*=================================================================*/
static const char* get_error_desc(CU_ErrorCode error);
#ifdef CUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS
void test_exit(int status);
#endif
/*------------------------------------------------------------------------*/
/** Set the error code.
* This function is used internally by CUnit implementation functions
* when an error condition occurs within the framework. It should
* not generally be called by user code. NOTE that if the current
* error action is CUEA_ABORT, then calling this function will
* result in exit() being called for the current application.
* @param error CU_ErrorCode indicating the current error condition.
* @see CU_get_error()
* @see CU_get_error_msg()
* @see CU_ErrorCode
*/
/*=================================================================
* Public API functions
*=================================================================*/
void CU_set_error(CU_ErrorCode error)
{
if ((error != CUE_SUCCESS) && (g_error_action == CUEA_ABORT)) {
......@@ -81,78 +74,40 @@ void CU_set_error(CU_ErrorCode error)
}
/*------------------------------------------------------------------------*/
/** Get the error code.
* CUnit implementation functions set the error code to indicate the
* status of the most recent operation. In general, the CUnit functions
* will clear the code to CUE_SUCCESS, then reset it to a specific error
* code if an exception condition is encountered. Some functions
* return the code, others leave it to the user to inspect if desired.
* @return The current error condition code.
* @see CU_get_error_msg()
* @see CU_ErrorCode
*/
CU_ErrorCode CU_get_error(void)
{
return g_error_number;
}
/*------------------------------------------------------------------------*/
/** Get the message corresponding to the error code.
* CUnit implementation functions set the error code to indicate the
* of the most recent operation. In general, the CUnit functions will
* clear the code to CUE_SUCCESS, then reset it to a specific error
* code if an exception condition is encountered. This function allows
* the user to retrieve a descriptive error message corresponding to the
* error code set by the last operation.
* @return A message corresponding to the current error condition.
* @see CU_get_error()
* @see CU_ErrorCode
*/
const char* CU_get_error_msg(void)
{
return get_error_desc(g_error_number);
}
/*------------------------------------------------------------------------*/
/** Set the action to take when an error condition occurs.
* This function should be used to specify the action to take
* when an error condition is encountered. The default action is
* CUEA_IGNORE, which results in errors being ignored and test runs
* being continued (if possible). A value of CUEA_FAIL causes test
* runs to stop as soon as an error condition occurs, while
* CU_ABORT causes the application to exit on any error.
* @param action CU_ErrorAction indicating the new error action.
* @see CU_get_error_action()
* @see CU_set_error()
* @see CU_ErrorAction
*/
void CU_set_error_action(CU_ErrorAction action)
{
g_error_action = action;
}
/*------------------------------------------------------------------------*/
/** Get the current error action code.
* @return The current error action code.
* @see CU_set_error_action()
* @see CU_set_error()
* @see CU_ErrorAction
*/
CU_ErrorAction CU_get_error_action(void)
{
return g_error_action;
}
/*
* Private static function definitions
*/
/*------------------------------------------------------------------------*/
/*=================================================================
* Private static function definitions
*=================================================================*/
/** Internal function to look up the error message for a specified
* error code. An empty string is returned if iError is not a member
* of CU_ErrorCode.
* @param iError CU_ErrorCode to look up.
* @return Pointer to a string containing the error message.
* @see CU_get_error_msg()
* error code. An empty string is returned if iError is not a member
* of CU_ErrorCode. If you add an error code to enum CU_ErrorCode,
* be sure to add a corresponding error message here.
*
* @param iError CU_ErrorCode to look up.
* @return Pointer to a string containing the error message.
* @see CU_get_error_msg()
*/
static const char* get_error_desc(CU_ErrorCode iError)
{
......@@ -184,16 +139,16 @@ static const char* get_error_desc(CU_ErrorCode iError)
"Suite initialization function failed.", /* CUE_SINIT_FAILED - 22 */
"Suite cleanup function failed.", /* CUE_SCLEAN_FAILED - 23 */
"Suite having name already registered.", /* CUE_DUP_SUITE - 24 */
"Requested suite is not active.", /* CUE_SUITE_INACTIVE - 25 */
"",
"",
"",
"",
"",
"NULL test not allowed.", /* CUE_NOTEST - 30 */
"NULL test or test function not allowed.",/* CUE_NOTEST - 30 */
"Test name cannot be NULL.", /* CUE_NO_TESTNAME - 31 */
"Test having this name already in suite.",/* CUE_DUP_TEST - 32 */
"Test not registered in specified suite.",/* CUE_TEST_NOT_IN_SUITE - 33 */
"",
"Requested test is not active", /* CUE_TEST_INACTIVE - 34 */
"",
"",
"",
......
/*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004,2005,2006 Anil Kumar, Jerry St.Clair
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004,2005,2006 Jerry St.Clair
* Copyright (C) 2004-2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......
/*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004,2005,2006 Jerry St.Clair
* Copyright (C) 2004-2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......@@ -21,6 +21,7 @@
* Unit test for CUnit framework
*
* 12-Aug-2004 Initial implementation. (JDS)
* 14-Apr-2006 Added PASS(). (JDS)
*/
/** @file
......@@ -87,8 +88,11 @@ CU_BOOL test_cunit_assert_impl(CU_BOOL value,
*/
#define TEST_FATAL(x) if (!test_cunit_assert_impl((x), #x, __FILE__, __LINE__)) return
/** Record a success. */
#define PASS() test_cunit_add_test()
/** Record a failure. */
#define FAIL(x) test_cunit_assert_impl(CU_FALSE, #x, __FILE__, __LINE__)
#define FAIL(cond_str) test_cunit_assert_impl(CU_FALSE, cond_str, __FILE__, __LINE__)
#ifdef __cplusplus
}
......
* Wed Apr 19 2006 Jerry St.Clair <jds2@users.sourceforge.net>
- Added ability to deactivate suite/tests dynamically.
- Removed constraint that suite/test names be unique.
- Added lookup functions to TestDB.[ch]
- Modified docs and internal unit tests for these changes.
- Moved doxygen comments for public functions to headers.
This will make them more accessible to clients without
having to generate doxygen docs.
* Wed Mar 22 2006 Jerry St.Clair <jds2@users.sourceforge.net>
- release 2.1.0
* Sat Mar 17 2006 Jerry St.Clair <jds2@users.sourceforge.net>
- Finalized upgrade of configure.in, Makefile.am.
- Upgraded Jamfile set to build shared library on Linux.
......
This diff is collapsed.
......@@ -15,11 +15,5 @@ Longer term CUnit upgrade ideas:
5. Windows interface.
6. Remove need for suites and tests to have unique (case-insensitive) names.
It is nice for reporting, and selection of suites and tests in the
current console/curses interfaces, but not really essential. Selection
could be by order or name, with the assigning of unique names left to
the user. Seems more like a recommended practice than a requirement.
7. Make test framework multi-thread safe. The current dependence on
6. Make test framework multi-thread safe. The current dependence on
static globals without access control will need to be addressed.
......@@ -49,6 +49,7 @@
RuntimeLibrary="1"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)\vc80_$(ProjectName).pdb"
BrowseInformation="1"
WarningLevel="4"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
......@@ -130,6 +131,7 @@
RuntimeLibrary="0"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)\vc80_$(ProjectName).pdb"
BrowseInformation="1"
WarningLevel="4"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
......@@ -215,6 +217,7 @@
RuntimeLibrary="1"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)\vc80_$(ProjectName).pdb"
BrowseInformation="1"
WarningLevel="4"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
......@@ -296,6 +299,7 @@
RuntimeLibrary="0"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)\vc80_$(ProjectName).pdb"
BrowseInformation="1"
WarningLevel="4"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
......@@ -347,6 +351,91 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug - Static Lib with MEMTRACE|Win32"
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\Examples;..\CUnit\Headers"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;MEMTRACE"
MinimalRebuild="true"
ExceptionHandling="0"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)\vc80_$(ProjectName).pdb"
BrowseInformation="1"
WarningLevel="4"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libcunit.lib"
OutputFile="$(OutDir)/AutomatedTest.exe"
LinkIncremental="2"
AdditionalLibraryDirectories="$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/AutomatedTest.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
......
......@@ -347,6 +347,90 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug - Static Lib with MEMTRACE|Win32"
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\Examples;..\CUnit\Headers"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;USE_DEPRECATED_CUNIT_NAMES;MEMTRACE"
MinimalRebuild="true"
ExceptionHandling="0"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)\vc80_$(ProjectName).pdb"
WarningLevel="4"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>