Hi all,
Am trying to figure out how to use assertions and have just installed Visual Assertion.
Have two projects: Calculator and Test
Code:
#include "Calculator.h"
Calculator::Calculator(void)
{
}
int Calculator::add(int a, int b)
{
int result = a + b;
return result;
}
int main(void)
{
Calculator cal;
int result = cal.add(3, 3);
return result;
}
Calculator::~Calculator(void)
{
}
Code:
#include "stdafx.h"
#include <cfixcc.h>
#include "C:\Users\Jannick\Documents\Visual Studio 2010\Projects\Calculator\Calculator\Calculator.h"
class ExampleTest : public cfixcc::TestFixture
{
public:
void TestOne()
{
Calculator cal;
int res = cal.add(3, 3);
CFIXCC_ASSERT_EQUALS(6, res);
}
void TestTwo()
{}
};
CFIXCC_BEGIN_CLASS( ExampleTest )
CFIXCC_METHOD( TestOne )
CFIXCC_METHOD( TestTwo )
CFIXCC_END_CLASS()
This code give the following error message when building:
1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1>Build started 25-03-2011 22:03:12.
1>InitializeBuildStatus:
1> Touching "Debug\Test.unsuccessfulbuild".
1>ClCompile:
1> All outputs are up-to-date.
1> All outputs are up-to-date.
1> Test.cpp
1>ManifestResourceCompile:
1> All outputs are up-to-date.
1>Link:
1> Creating library C:\Users\Jannick\Documents\Visual Studio 2010\Projects\Calculator\Debug\Test.lib and object C:\Users\Jannick\Documents\Visual Studio 2010\Projects\Calculator\Debug\Test.exp
1>Test.obj : error LNK2019: unresolved external symbol "public: __thiscall Calculator::~Calculator(void)" (??1Calculator@@QAE@XZ) referenced in function "public: void __thiscall ExampleTest::TestOne(void)" (?TestOne@ExampleTest@@QAEXXZ)
1>Test.obj : error LNK2019: unresolved external symbol "public: int __thiscall Calculator::add(int,int)" (?add@Calculator@@QAEHHH@Z) referenced in function "public: void __thiscall ExampleTest::TestOne(void)" (?TestOne@ExampleTest@@QAEXXZ)
1>Test.obj : error LNK2019: unresolved external symbol "public: __thiscall Calculator::Calculator(void)" (??0Calculator@@QAE@XZ) referenced in function "public: void __thiscall ExampleTest::TestOne(void)" (?TestOne@ExampleTest@@QAEXXZ)
1>C:\Users\Jannick\Documents\Visual Studio 2010\Projects\Calculator\Debug\Test.dll : fatal error LNK1120: 3 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.13
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
I cant understand why its not possible for me to simply create an object of type Calculator and then ude its method add(int, int).
(Bonus question :-) Why does the Calculator.cpp have to have a main method? Is is possible to just make a class that have usable methods like my add(int, int) and not have a main method?)