Author |
Topic |
|
xxluda
Senior Member
29 Posts |
Posted - Mar 10 2009 : 07:30:05 AM
|
Hi, After solving problem with Boost foreach macro, I want to solve similar problem with Boost .TEST macros.
In copy of VA's StdAfx in current user directory I added following lines:
#define BOOST_AUTO_TEST_CASE(x) void x::x()
#define BOOST_FIXTURE_TEST_CASE(X,Y) void X_Y()
#define BOOST_AUTO_TEST_SUITE(x) class x {
#define BOOST_FIXTURE_TEST_SUITE(X,Y) class Y {
#define BOOST_AUTO_TEST_SUITE_END };
#define BOOST_REQUIRE_EQUAL(x,y) x;
#define BOOST_TEST_MESSAGE(x) x;
#define BOOST_REQUIRE(x) x;
#define BOOST_CHECK_EQUAL(x, y) x;
( examples with correct use of these macros are e.g. here http://www.boost.org/doc/libs/1_38_0/libs/test/doc/html/utf/user-guide/fixture/test-suite-shared.html)
But when VA parser found following lines in my code, starts underline all correct expressions:
//...
//Code before this macro is correctly parsed...
//..
BOOST_FIXTURE_TEST_SUITE( RestProtocol, RestProtocolBasicFixture)
//
//after this macro, all variables are underlined ( variables pConnection1, pConnection2, pConnStruct, pConnStructErr, ... )
//
void Initialization(CVirtualDataProvider * pConnection1, CVirtualDataProvider * pConnection2)
{
DataProviderConnectionStruct * pConnStruct = CGlobalAtomixORM::Instance().GetConnectionStruct();
DataProviderConnectionStruct * pConnStructErr = pConnStruct->CreateConnectionStructCopy();
pConnStructErr->strCatalog = _T("ERR");
Is anything wrong in VA's StdAfx.h definitions ?
Thanks for reply Ludek Vodicka |
Ludek Vodicka Skipper Chief developer www.skipper18.com |
|
xxluda
Senior Member
29 Posts |
Posted - Mar 10 2009 : 07:44:11 AM
|
I'm also try :
#define BOOST_FIXTURE_TEST_SUITE(X,Y) void Y::Test() {
without any change.
But I find out, that when I move mouse over BOOST_FIXTURE_TEST_SUITE macro, VA show me following tooltip :
This mean, that VA use default BOOST macro instead of VA's stdaf.h macro ?
Thanks, LV |
Ludek Vodicka Skipper Chief developer www.skipper18.com |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Mar 11 2009 : 4:04:30 PM
|
I also had problems with your test code and these macros in VA's StdAfx.h file. However even if VA uses these dummy macros correctly, the code you posted with produce this effect, since you have introduced an unmatched curly bracket.
As a test I added:
#define BOOST_FIXTURE_TEST_SUITE
to VA's StdAfx.h file, rebuilt VA's symbol database (required after you edit the StdAfx.h file) and then re-tried your test code. This fixed the extra underlining, and now only the unknown types are underlined for me. |
zen is the art of being at one with the two'ness |
|
|
xxluda
Senior Member
29 Posts |
Posted - Mar 12 2009 : 09:13:01 AM
|
Hi, when I use your macro :
#define BOOST_FIXTURE_TEST_SUITE instead of mine :
#define BOOST_FIXTURE_TEST_SUITE(X,Y) class Y { , VA doesn't help me with Fixtures variables. Boost .Test provide fixture mechanism, which offer initial and deinitial code. In whole test suite I'm able to access fixture variables, as demonstrate following code :
struct RestProtocolBasicFixture
{
int nVariable;
RestProtocolBasicFixture() {}
~ RestProtocolBasicFixture() {}
};
BOOST_FIXTURE_TEST_SUITE( RestProtocol, RestProtocolBasicFixture)
void Initialization(CVirtualDataProvider * pConnection1, CVirtualDataProvider * pConnection2)
{
//Access fixture "RestProtocolBasicFixture" variable nVariable
nVariable = 10;
}
BOOST_AUTO_TEST_SUITE_END
...
You wrote "since you have introduced an unmatched curly bracket.". I don't know if I understand correctly, but my macro "BOOST_FIXTURE_TEST_SUITE" is translated to "class Y {" and closing macro "BOOST_AUTO_TEST_SUITE_END" is translated to "};" . After that, I don't have any unmatched bracket.
|
Ludek Vodicka Skipper Chief developer www.skipper18.com |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Mar 12 2009 : 3:11:09 PM
|
Your first sample code did not call BOOST_AUTO_TEST_SUITE_END, so I did not know you were closing the curly bracket like that.
I have run some tests here. Simply turning on deep macro parsing, as explained in this FAQ entry:
http://docs.wholetomato.com?W363
helped, but it did not help enough. With this turned on, and your dummy macro's added to VA's StdAfx.h file this appears to be working correctly. "nVariable" is recognised as a member of the struct RestProtocolBasicFixture when used inside the Initialization function.
Can you try turning on deep macro parsing and see what results you get? |
zen is the art of being at one with the two'ness |
|
|
xxluda
Senior Member
29 Posts |
Posted - Mar 12 2009 : 3:50:21 PM
|
When I turn deep macro parsing on, then whole file looks ok. I try this deep macro settings later but without VA's stdafx.h modifications, which leads to massive slowdown of whole Visual studio. With VA's stdafx.h #defines I didn't notice any slowdown.
Thanks for help. LV |
Ludek Vodicka Skipper Chief developer www.skipper18.com |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Mar 16 2009 : 2:16:13 PM
|
I am not surprised this causes VA to slow down. The deep macro parsing is telling VA to do a lot more work, on complex macros.
We are working on some changes that *may* help with these macro's. Hopefully we will have something in the next build or two, but you will have to try it and see if it helps or not in your case:
case=25115 |
zen is the art of being at one with the two'ness |
|
|
xxluda
Senior Member
29 Posts |
Posted - Mar 16 2009 : 3:01:37 PM
|
After several days with these VA settings I found following things.
First, sometimes whole file was underlined as errors, after few seconds is all ok, and after next few seconds is all wrong again.
Second thing, sometimes after I changed VA's stdafx, full rebuild didn't help and I have to delete all tmp VA's file manually to perform correct rebuild.
And occasionally, I have to rebuild symbol database twice, because in first attempt some macros aren't recognized correctly (I'm deleting symbol DB before every try).
I'm looking forward to next version of these parsers, because editing files without VA's help is realy frustrating ;-). |
Ludek Vodicka Skipper Chief developer www.skipper18.com |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Mar 17 2009 : 1:29:07 PM
|
I am not sure what is going on here, but clearly VA is having some problems with these macro's.
The underlining disappearing and reappearing, VA only applies underlining after editing a file. Simply opening a file is not enough to trigger underlining.
Secondly underlining can disappear after an edit, only to re-appear when VA has recalculated what to underline. Adding new lines to a file moves the underlining down, and editing the code can significantly change what should be underlined, so this will partly explain what you are seeing with the underlining. |
zen is the art of being at one with the two'ness |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Apr 16 2009 : 5:46:19 PM
|
If you are using VA 1721 or above then there is something you can try to speed things up. Firstly make sure you have turned on macro parsing as described in this FAQ entry:
http://docs.wholetomato.com?W363
Then with all instances of the IDE closed set the registry key:
HKCU \\ Software \\ Whole Tomato \\ Visual Assist X \\ LimitMacro = "NoDepthLimit"
instead of the old value of "No".
The macro parsing should be quite a bit faster. Can you please let me know if this makes any difference or not. |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|