<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Some C++ Fixtures for FitNesse.slim</title>
    <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Some C++ Fixtures for FitNesse.slim</title>
      <description>&lt;p&gt;I continue working on these. I was stuck in the airport for 5 hours. Between that and the actual flight, I managed to create three different test examples against a C++ RpnCalculator. Each example uses a different kind of fixture. I had a request from @lrojas to publish some results on the blog. So this is that, however these are in progress and rough.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m still trying different forms to figure out what I like the best.&lt;/p&gt;


	&lt;p&gt;By the way, that lastValue stuff in the fixtures has to do with the fact that all of the hook methods return a char* but I&amp;#8217;m responsible for cleaning up after myself.&lt;/p&gt;


&lt;h2&gt;A Decision Table&lt;/h2&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;!|ExecuteBinaryOperator    |
|lhs|rhs|operator|expected?|
|3  |4  |-       |-1       |
|5  |6  |*       |30       |&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;And Its Fixture Code&lt;/h2&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;quot;RpnCalculator.h&amp;quot;
#include &amp;quot;OperationFactory.h&amp;quot;
#include &amp;quot;Fixtures.h&amp;quot;
#include &amp;quot;SlimUtils.h&amp;quot;

struct ExecuteBinaryOperator {
    ExecuteBinaryOperator() {
        lastValue[0] = 0;
    }

    int execute() {
        RpnCalculator calculator(factory);
        calculator.enterNumber(lhs);
        calculator.enterNumber(rhs);
        calculator.executeOperator(op);
        return calculator.getX();
    }

    static ExecuteBinaryOperator* From(void *fixtureStorage) {
        return reinterpret_cast&amp;lt;ExecuteBinaryOperator*&amp;gt;(fixtureStorage);
    }

    OperationFactory factory;
    int lhs;
    int rhs;
    std::string op;
    char lastValue[32];
};

extern &amp;quot;C&amp;quot; {
void* ExecuteBinaryOperator_Create(StatementExecutor* errorHandler, SlimList* args) {
    return new ExecuteBinaryOperator;
}

void ExecuteBinaryOperator_Destroy(void* self) {
    delete ExecuteBinaryOperator::From(self);
}

static char* setLhs(void* fixture, SlimList* args) {
    ExecuteBinaryOperator *self = ExecuteBinaryOperator::From(fixture);
    self-&amp;gt;lhs = getFirstInt(args);
    return self-&amp;gt;lastValue;
}

static char* setRhs(void* fixture, SlimList* args) {
    ExecuteBinaryOperator *self = ExecuteBinaryOperator::From(fixture);
    self-&amp;gt;rhs = getFirstInt(args);
    return self-&amp;gt;lastValue;
}

static char* setOperator(void *fixture, SlimList* args) {
    ExecuteBinaryOperator *self = ExecuteBinaryOperator::From(fixture);
    self-&amp;gt;op = getFirstString(args);
    return self-&amp;gt;lastValue;
}
static char* expected(void* fixture, SlimList* args) {
    ExecuteBinaryOperator *self = ExecuteBinaryOperator::From(fixture);
    int result = self-&amp;gt;execute();
    snprintf(self-&amp;gt;lastValue, sizeof(self-&amp;gt;lastValue), &amp;quot;%d&amp;quot;, result);
    return self-&amp;gt;lastValue;
}

SLIM_CREATE_FIXTURE(ExecuteBinaryOperator)
    SLIM_FUNCTION(setLhs)
    SLIM_FUNCTION(setRhs)
    SLIM_FUNCTION(setOperator)
    SLIM_FUNCTION(expected)
SLIM_END

}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
There&amp;#8217;s a bit of duplication. I&amp;#8217;ve been experimenting with pointers to member functions and template functions to make it better. I really should be using lambdas, but I&amp;#8217;m not there yet. I have them available in some form since I&amp;#8217;m using gcc 4.5. I simply compile with the option -sdd=c++0x. Even so, I&amp;#8217;m not quite ready to do that.

&lt;h2&gt;A Script Table&lt;/h2&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;!|script           |ProgramTheCalculator                   |
|startProgramCalled|primeFactorsOfSum                      |
|addOperation      |sum                                    |
|addOperation      |primeFactors                           |
|saveProgram                                               |
|enter             |4                                      |
|enter             |13                                     |
|enter             |7                                      |
|execute           |primeFactorsOfSum                      |
|check             |stackHas|3|then|2|then|2|then|2|is|true|&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;And Its Fixture Code&lt;/h2&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;quot;RpnCalculator.h&amp;quot;
#include &amp;quot;OperationFactory.h&amp;quot;
#include &amp;quot;SlimUtils.h&amp;quot;
#include &amp;quot;SlimList.h&amp;quot;
#include &amp;quot;Fixtures.h&amp;quot;

struct ProgramTheCalculator {
    ProgramTheCalculator() : calculator(factory) {
    }

    static ProgramTheCalculator* From(void *fixtureStorage) {
        return reinterpret_cast&amp;lt;ProgramTheCalculator*&amp;gt;(fixtureStorage);
    }

    OperationFactory factory;
    RpnCalculator calculator;
};

extern &amp;quot;C&amp;quot; {

void* ProgramTheCalculator_Create(StatementExecutor* errorHandler, SlimList* args) {
    return new ProgramTheCalculator;
}

void ProgramTheCalculator_Destroy(void *fixture) {
    delete ProgramTheCalculator::From(fixture);
}

static char* startProgramCalled(void *fixture, SlimList *args) {
    auto *self = ProgramTheCalculator::From(fixture);
    self-&amp;gt;calculator.createProgramNamed(getFirstString(args));
    return remove_const(&amp;quot;&amp;quot;);
}

static char* addOperation(void *fixture, SlimList *args) {
    auto *self = ProgramTheCalculator::From(fixture);
    self-&amp;gt;calculator.addOperation(getFirstString(args));
    return remove_const(&amp;quot;&amp;quot;);
}

static char* saveProgram(void *fixture, SlimList *args) {
    auto *self = ProgramTheCalculator::From(fixture);
    self-&amp;gt;calculator.saveProgram();
    return remove_const(&amp;quot;&amp;quot;);
}

static char* enter(void *fixture, SlimList *args) {
    auto *self = ProgramTheCalculator::From(fixture);
    self-&amp;gt;calculator.enterNumber(getFirstInt(args));
    return remove_const(&amp;quot;&amp;quot;);
}

static char* execute(void *fixture, SlimList *args) {
    auto *self = ProgramTheCalculator::From(fixture);
    self-&amp;gt;calculator.executeOperator(getFirstString(args));
    return remove_const(&amp;quot;&amp;quot;);
}

static char* stackHasThenThenThenIs(void *fixture, SlimList *args) {
    auto *self = ProgramTheCalculator::From(fixture);
    for(int i = 0; i &amp;lt; 4; ++i) {
            if(self-&amp;gt;calculator.getX() != getIntAt(args, i))
                return remove_const(&amp;quot;false&amp;quot;);
            self-&amp;gt;calculator.executeOperator(&amp;quot;drop&amp;quot;);
    }

      return remove_const(&amp;quot;true&amp;quot;);
}

SLIM_CREATE_FIXTURE(ProgramTheCalculator)
    SLIM_FUNCTION(startProgramCalled)
    SLIM_FUNCTION(addOperation)
    SLIM_FUNCTION(saveProgram)
    SLIM_FUNCTION(enter)
    SLIM_FUNCTION(execute)
    SLIM_FUNCTION(stackHasThenThenThenIs)
SLIM_END

}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
This one is a bit more regular. I am using the updated auto keyword in this code. The fixture is just holding the calculator and its OperationFactory (not my preferred name, but that&amp;#8217;s what students wanted to call things like +, -, etc, operations not operators).

&lt;h2&gt;The Dreaded Query Table&lt;/h2&gt;
It&amp;#8217;s a bit of a pain to produce query results. So much so, I wrote a simple library in Java to make it easier. I can create a well-formed query result from a single object or a list of objects and even do basic transforms (in names and in paths to data). I started using the jakarta bean utils, but my use was so simple (2 methods), I ripped out that library and just hand-wrote the methods I needed. It was not a case of &amp;#8220;not invented here syndrom.&amp;#8221; I started by using the library, and I had tests. I didn&amp;#8217;t like the size of the library relative to how much I was using it, so I just got rid of it.

	&lt;p&gt;Well here I am working C++ and I felt compelled to make it easier work with query results in C++.&lt;/p&gt;


First the FitNesse table, then the fixture and finally the support  class. I have tests for it as well, I&amp;#8217;m not going to show those, however.
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;!|Query: SingleCharacterNameOperators|
|op                                  |
|+                                   |
|*                                   |
|/                                   |
|!                                   |
|-                                   |&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;And Its Fixture Code&lt;/h2&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;memory&amp;gt;
#include &amp;quot;RpnCalculator.h&amp;quot;
#include &amp;quot;OperationFactory.h&amp;quot;
#include &amp;quot;Fixtures.h&amp;quot;
#include &amp;quot;SlimUtils.h&amp;quot;
#include &amp;quot;QueryResultAccumulator.h&amp;quot;

struct SingleCharacterNameOperators {
    OperationFactory factory;
    RpnCalculator calculator;

    SingleCharacterNameOperators() :
        calculator(factory), result(0) {
    }

    ~SingleCharacterNameOperators() {
        delete result;
    }
    static SingleCharacterNameOperators* From(void *fixtureStorage) {
        return reinterpret_cast&amp;lt;SingleCharacterNameOperators*&amp;gt; (fixtureStorage);
    }

    void resetResult(char *newResult) {
        delete result;
        result = newResult;
    }

    void conditionallyAddOperatorNamed(const std::string &amp;amp;name) {
        if (name.size() == 1) {
            accumulator.addFieldNamedWithValue(&amp;quot;op&amp;quot;, name);
            accumulator.finishCurrentObject();
        }
    }

    void buildResult() {
        v_string names = calculator.allOperatorNames();
        buildResult(names);
    }

    void buildResult(v_string &amp;amp;names) {
        for (v_string::iterator iter = names.begin(); iter != names.end(); ++iter)
            conditionallyAddOperatorNamed(*iter);

        resetResult(accumulator.produceFinalResults());
    }

    QueryResultAccumulator accumulator;
    char *result;
};

extern &amp;quot;C&amp;quot; {
void* SingleCharacterNameOperators_Create(StatementExecutor* errorHandler,
        SlimList* args) {
    return new SingleCharacterNameOperators;
}

void SingleCharacterNameOperators_Destroy(void *fixture) {
    delete SingleCharacterNameOperators::From(fixture);
}

static char* query(void *fixture, SlimList *args) {
    auto *self = SingleCharacterNameOperators::From(fixture);
    self-&amp;gt;buildResult();
    return self-&amp;gt;result;
}

SLIM_CREATE_FIXTURE(SingleCharacterNameOperators)
    SLIM_FUNCTION(query)SLIM_END
SLIM_END&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;And the Helper Class&lt;/h2&gt;
&lt;b&gt;QueryResultAccumulator.h&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#pragma once
#ifndef QUERYRESULTACCUMULATOR_H_
#define QUERYRESULTACCUMULATOR_H_

class SlimList;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;string&amp;gt;
class QueryResultAccumulator {
public:
    typedef std::vector&amp;lt;SlimList*&amp;gt; v_SlimList;
    typedef v_SlimList::iterator iterator;

    QueryResultAccumulator();
    virtual ~QueryResultAccumulator();

    void finishCurrentObject();
    void addFieldNamedWithValue(const std::string &amp;amp;name, const std::string &amp;amp;value);
    char *produceFinalResults();

private:
    SlimList* allocate();
    void releaseAll();
    void setInitialConditions();

private:
    v_SlimList created;
    SlimList *list;
    SlimList *currentObject;
    int lastFieldCount;
    int currentFieldCount;
    char *result;

private:
    QueryResultAccumulator(const QueryResultAccumulator&amp;amp;);
    QueryResultAccumulator&amp;amp; operator=(const QueryResultAccumulator&amp;amp;);
};

#endif
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;I know there are too many fields. The counts help with validating correct usage. I also wrote it so one instance could be re-used and I tried to make sure it was in a &amp;#8220;ready to receive fields&amp;#8221; state when necessary. In any case, this error checking helped find a defect I introduced while refactoring.&lt;/p&gt;


&lt;b&gt;QueryResultAccumulator.cpp&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#include &amp;quot;QueryResultAccumulator.h&amp;quot;
#include &amp;quot;DifferentFieldCountsInObjects.h&amp;quot;
#include &amp;quot;InvalidStateException.h&amp;quot;

extern &amp;quot;C&amp;quot; {
#include &amp;quot;SlimList.h&amp;quot;
#include &amp;quot;SlimListSerializer.h&amp;quot;
}

QueryResultAccumulator::QueryResultAccumulator() : result(0) {
    setInitialConditions();
}

QueryResultAccumulator::~QueryResultAccumulator() {
    releaseAll();
    SlimList_Release(result);
}

void QueryResultAccumulator::setInitialConditions() {
    releaseAll();
    list = allocate();
    currentObject = allocate();
    lastFieldCount = -1;
    currentFieldCount = -1;
}

SlimList* QueryResultAccumulator::allocate() {
    SlimList *list = SlimList_Create();
    created.push_back(list);
    return list;
}

void QueryResultAccumulator::releaseAll() {
    for (iterator i = created.begin(); i != created.end(); ++i)
        SlimList_Destroy(*i);
    created.clear();
}

void QueryResultAccumulator::finishCurrentObject() {
    if(lastFieldCount &amp;gt;= 0 &amp;amp;&amp;amp; lastFieldCount != currentFieldCount)
        throw DifferentFieldCountsInObjects(lastFieldCount, currentFieldCount);

    SlimList_AddList(list, currentObject);
    currentObject = allocate();

    lastFieldCount = currentFieldCount;
    currentFieldCount = -1;
}

void QueryResultAccumulator::addFieldNamedWithValue(const std::string &amp;amp;name, const std::string &amp;amp;value) {
    SlimList *fieldList = allocate();
    SlimList_AddString(fieldList, name.c_str());
    SlimList_AddString(fieldList, value.c_str());
    SlimList_AddList(currentObject, fieldList);
    ++currentFieldCount;
}

char* QueryResultAccumulator::produceFinalResults() {
    if(currentFieldCount != -1)
        throw InvalidStateException(&amp;quot;Current object not written&amp;quot;);

    SlimList_Release(result);
    result = SlimList_Serialize(list);
    setInitialConditions();
    return result;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Note, this code uses a method I added to the cslim library:
&lt;b&gt;SlimListSerializer.h &amp;#8211; in include/CSlim&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;void SlimList_Release(char *serializedResults);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;b&gt;SlimListSerializer.c &amp;#8211; in src/CSlim&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;void SlimList_Release(char *serializedResults)
{
  if(serializedResults)
    free(serializedResults);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;I needed to add these methods due to a false-positive memory leak indicated when using CppUTest to test this code. That&amp;#8217;s another blog.&lt;/p&gt;</description>
      <pubDate>Thu, 22 Jul 2010 00:32:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:63a89994-cb84-4422-b3c8-5ac5e7f53331</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>c</category>
      <category>FitNesse</category>
      <category>cslim</category>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by irpqls0</title>
      <description>&lt;p&gt;Really its a good news. I am very interested for this post. This side will be help all of us. Thanks.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://drugabuse-help.org/" rel="nofollow"&gt;Drug Abuse Help&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 27 Jan 2012 12:03:29 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:1122cfc6-508c-4410-b33c-c2bc3c8d5a69</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-199368</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by ijbvde5</title>
      <description>&lt;p&gt;It is so lucky to read your blog,it is full of useful message.I wish we both can do better in the future.It great honor if you can visit our website,and give us some suggestion.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.melovemoney.com/dropshippingreviews/" rel="nofollow"&gt;Best Drop Shippers&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 17 Jan 2012 07:15:20 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:2c70e023-9213-45fa-a003-f812b42ab71c</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-198349</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by online docs</title>
      <description>&lt;p&gt;it was really a great article&amp;#8230;..there is no doubt.&lt;/p&gt;</description>
      <pubDate>Tue, 17 Jan 2012 03:26:10 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:71046433-035d-4403-8e9e-fb0248355d0c</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-198271</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Backup iPhone SMS</title>
      <description>&lt;p&gt;You&amp;#8217;ve very good at writing C++ code.&lt;/p&gt;</description>
      <pubDate>Sat, 14 Jan 2012 07:48:06 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:516615d9-f0b5-4947-bdfe-d6bb29a2ef8e</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-197846</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by jordan heels women</title>
      <description>&lt;p&gt;More and more people are now engaging into &lt;a href="http://www.nikeheelsdunk.com/" rel="nofollow"&gt;women jordan heels&lt;/a&gt; camping especially now that the metros are becoming more and more polluted and congested. Before, this activity has only been a means of adventure and chilling; but now camping has also turned into a popular sport.A usual camping activity starts with the preparation of gears and gadgets. Food are then packed and sealed. After several miles of travel, campers arrive at the &lt;a href="http://www.nikewomenheels.net/" rel="nofollow"&gt;Nike heels&lt;/a&gt; site. After setting the tents, everyone goes on with different activities: mountain hiking, skiing, snow boarding, etc.&lt;/p&gt;</description>
      <pubDate>Tue, 10 Jan 2012 02:08:29 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:d1b59502-a167-4368-8c04-ea44519b5b33</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-196580</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by boost immune system</title>
      <description>&lt;p&gt;Thanks for sharing. i really appreciate it that you shared with us such a informative post.&lt;/p&gt;</description>
      <pubDate>Wed, 04 Jan 2012 06:26:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ef606876-f370-456f-8756-02ba3c1c8aff</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-194722</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Moncler Women Jackets</title>
      <description>&lt;p&gt;If you are well-built or rather have a heavy Cheap Moncler Jackets then you should wear full sleeve t-shirts and wearing Moncler Down Jackets as they tend to make you look warmer.&lt;/p&gt;</description>
      <pubDate>Mon, 02 Jan 2012 02:53:18 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a05be4e1-74d4-4eaa-b31e-b955835a1a12</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-194137</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Moncler Mens Down Jacket</title>
      <description>&lt;p&gt;Hi! When I originally commented &lt;a href="http://www.cheapmonlcersale.com/" rel="nofollow"&gt;Moncler Jakcets&lt;/a&gt; I clicked the Notify me when new &lt;a href="http://www.cheapmonlcersale.com/mens-moncler-jackets-c-6.html" rel="nofollow"&gt;Moncler Down Jackets For Men&lt;/a&gt;comments are added checkbox now every time a comment is added I get four emails with similar &lt;a href="http://www.cheapmonlcersale.com/womens-moncler-coats-c-3.html" rel="nofollow"&gt;Women Moncler Coats&lt;/a&gt; comment. Is there &lt;a href="http://www.cheapmonlcersale.com/mens-moncler-vests-c-5.html" rel="nofollow"&gt;Moncler Vest Sale&lt;/a&gt; in any manner you are able to remove me from that service? Thanks!&lt;/p&gt;</description>
      <pubDate>Fri, 30 Dec 2011 03:16:54 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:6a8d3e3f-c22e-4fa1-8b2f-d5036dce0563</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-193665</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by nikeheelsdunk</title>
      <description>&lt;p&gt;One of the most famous and widely-practiced dance &lt;a href="http://www.nikeheelsdunk.com/" rel="nofollow"&gt;women jordan heels&lt;/a&gt; form is ballet. Almost everyone around the globe knows what ballet is, regardless of whether you are into the art, know someone &lt;a href="http://www.nikeheelsdunk.com/" rel="nofollow"&gt;women jordan heels&lt;/a&gt; practicing ballet, have&amp;nbsp;seen it on television or movies, in musical plays or stage presentations. Ballet is the predominant dance art that has enjoyed global appeal.Of all the dance arts &lt;a href="http://www.jordanheelswomen.net/" rel="nofollow"&gt;Jordan Heels For Women&lt;/a&gt; or forms that are being practiced, aside from the&amp;nbsp;territorial or regional ethnic dance forms- ballet enjoys a reputation a notch above the rest since it is associated with prestige and sophistication.&lt;/p&gt;</description>
      <pubDate>Fri, 30 Dec 2011 02:25:58 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0479c0e7-29d4-4c81-a5d7-05dca57cf30f</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-193639</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Electric Houston Texas</title>
      <description>&lt;p&gt;This type of Beautiful session specify clarity in your post is simply spectacular and I can assume you are an expert on this field.&lt;/p&gt;</description>
      <pubDate>Mon, 26 Dec 2011 22:59:49 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:7e1acd80-78e6-41c2-9b3b-bc22331760d6</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-192355</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by nikeheelsdunk</title>
      <description>&lt;p&gt;For every beginning hunter, there are probably a hundred things that are needed when it comes to hunting for the &lt;a href="http://www.nikeheelsdunk.com/" rel="nofollow"&gt;women jordan heels&lt;/a&gt; first time. Though it may also include a cell phone or other non-essentials like a mp3 player, it would be good to have a few things needed before going with the hunting group.&lt;/p&gt;</description>
      <pubDate>Mon, 26 Dec 2011 02:37:12 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:77d90dc3-a282-4bf9-8cfa-73019467aac9</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-192150</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Cheap Oakley Sunglasses Outlet</title>
      <description>&lt;p&gt;&lt;a href="http://www.oakleysunglasses-hut.com" rel="nofollow"&gt;&lt;strong&gt;Oakley Sunglasses Hut&lt;/strong&gt;&lt;/a&gt; has provided the environment for a variety of colors mountain light lens coating, with Iridium? &lt;a href="http://www.oakleysunglasses-hut.com" rel="nofollow"&gt;&lt;strong&gt;Cheap Oakley Sunglasses Outlet&lt;/strong&gt;&lt;/a&gt; with the use of harsh sunlight and reduce the balance of light transmission, so that the light reaching the eyes of athletes precisely adjusted to produce the best visual . Our G30?&lt;a href="http://www.oakleysunglasses-hut.com" rel="nofollow"&gt;&lt;strong&gt;Best Oakley Sunglasses&lt;/strong&gt;&lt;/a&gt; Lens color is popular favorite athletes want to enhance the visual contrast of a choice. Oakley VR28?&lt;a href="http://www.oakleysunglasses-hut.com/oakley-lifestyle-sunglasses-c-14.html" rel="nofollow"&gt;&lt;strong&gt;Oakley Lifestyle Sunglasses&lt;/strong&gt;&lt;/a&gt; Has proven to be versatile lens colors, widely used in various light conditions.&lt;a href="http://www.oakleysunglasses-hut.com" rel="nofollow"&gt;&lt;strong&gt;Discount Oakley Sunglasses Outlet&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 26 Dec 2011 01:28:34 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:b8587154-d8ac-49a5-a324-e97e175070f1</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-192062</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Sale Ladies Leather Handbags</title>
      <description>&lt;p&gt;Allow phonetic typingMost of this season&amp;#8217;s no longer the exclusive expedition &lt;a href="http://www.saleladiesleatherhandbags.com" rel="nofollow"&gt;&lt;strong&gt;Sale Ladies Leather Handbags&lt;/strong&gt;&lt;/a&gt; workplace &amp;#8216;Skeleton&amp;#8217;, &lt;a href="http://www.saleladiesleatherhandbags.com" rel="nofollow"&gt;&lt;strong&gt;Black Leather Handbags&lt;/strong&gt;&lt;/a&gt; they seem to be for those who like slow-paced, understand humor, and occasionally a big love like a baby girl tailor-made. . Relax pastoral style Replaced with a small square bag, Previous broad-brush woven bag,Make this a more refined shape,Striking Chromic gentle, sweet,Material is also the finest ostrich and nubuck leather treated,&lt;a href="http://www.saleladiesleatherhandbags.com" rel="nofollow"&gt;&lt;strong&gt;Ladies Leather Handbags&lt;/strong&gt;&lt;/a&gt; From the inside filled with feelings of holiday joy,Gold is still the preferred destination for summer magic light,This year the popular rock but not metal, the metal line of luxury.&lt;/p&gt;</description>
      <pubDate>Mon, 26 Dec 2011 01:24:01 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:26010444-f48c-4f3b-aa2e-2bd984398a25</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-192044</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Austin Hydroponics</title>
      <description>&lt;p&gt;I had visited numerous web property within the last couple of days. After examining the posts of each I do believe that this kind of website was the only one who had trapped the apex of my desire.&lt;/p&gt;</description>
      <pubDate>Tue, 20 Dec 2011 23:21:19 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:de27250a-00e4-433e-9005-f1d7df7351eb</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-190063</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by kadfa6</title>
      <description>&lt;p&gt;Thanks for providing such useful information. I really appreciate your professional approach. I would like to thank you for the efforts you made in writing this post.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://nitrousoxideabuse.com/" rel="nofollow"&gt;Nitrous Oxide Abuse&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 30 Nov 2011 12:45:04 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:c453791f-2e1e-4d13-8b16-0808511b4b9a</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-180111</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by kdaod0</title>
      <description>&lt;p&gt;Thanks for this article. Its really a good topic. I like this side. Give me some information about this side.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://coughsyrupabuse.com/" rel="nofollow"&gt;Cough Syrup Abuse&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 29 Nov 2011 22:45:33 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a3ce6cd8-6fdb-4738-987f-00a9fb99fa0f</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-179815</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Spyder Jackets</title>
      <description>&lt;p&gt;&lt;a href="http://www.spyderjackets-outlet.net" rel="nofollow"&gt;http://www.spyderjackets-outlet.net&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 18 Nov 2011 01:26:09 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a5334fef-e6be-45b8-bd0e-3b7cc73544fd</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-175267</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Diving Compressor</title>
      <description>&lt;p&gt;I continue working on these. I was stuck in the airport for 5 hours. Between that and the actual flight, I managed to create three different test examples against a C++ RpnCalculator.&lt;/p&gt;</description>
      <pubDate>Tue, 15 Nov 2011 11:14:13 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:5b9b2bb0-99e9-49ba-b2a6-c42e52bb4f7c</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-173316</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by nike heels dunk</title>
      <description>&lt;p&gt;Today you wear high heels. As for Women and &lt;a href="http://www.nikeheelsdunk.com/" rel="nofollow"&gt;jordan high heels&lt;/a&gt;, this is the inseparable relations, Tom Ford master evidence: &amp;#8220;don&amp;#8217;t wear the high-heeled shoes woman how talk up sexy?&amp;#8221; High heels and sex appeal is relevant? The answer is: &amp;#8220;of course!&amp;#8221; The temptation of high-heeled shoes Wear &lt;a href="http://www.nikeheelsdunk.com/air-jordan-1-high-heels-c-75.html" rel="nofollow"&gt;women nike heels online&lt;/a&gt; in a split second sexy, charm and confident outbreak, twisting the waist is born swaying pose..Worth looking at, perhaps have unexpected harvest.&lt;/p&gt;</description>
      <pubDate>Fri, 11 Nov 2011 22:04:41 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:7b3ceeec-a4e5-4102-a6a8-986457135fdb</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-171550</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by christian louboutin</title>
      <description>&lt;p&gt;Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog&lt;/p&gt;</description>
      <pubDate>Thu, 03 Nov 2011 11:45:18 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5964a312-7ef6-4e31-9b62-b4956f495654</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-167738</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by christian louboutin</title>
      <description>&lt;p&gt;The professional design make you foot more comfortable. Even more tantalizing,this pattern make your legs look as long as you can,it will make you looked more attractive.Moveover,it has reasonable price.If you are a popular woman,do not miss it.&lt;/p&gt;


	&lt;p&gt;Technical details of Christian Louboutin Velours Scrunch Suede Boots Coffee:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;Color: Coffee
Material: Suede
4(100mm) heel
Signature red sole x&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Fashion, delicate, luxurious Christian louboutins shoes on sale, one of its series is Christian Louboutin Tall Boots, is urbanism collocation. This Christian louboutins shoes design makes people new and refreshing. Red soles shoes is personality, your charm will be wonderful performance.&lt;/p&gt;</description>
      <pubDate>Thu, 03 Nov 2011 11:03:07 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:452826ff-5dd4-4100-941b-726f7cda80b1</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-167699</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by nike run free</title>
      <description>&lt;p&gt;Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog&lt;/p&gt;</description>
      <pubDate>Mon, 31 Oct 2011 07:03:48 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d364d452-ffef-4b1b-ae8a-8ee42eb0e784</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-166214</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Property Marbella</title>
      <description>&lt;p&gt;agree with your point,nice article,thanks.I will continue to read your articles.&lt;/p&gt;</description>
      <pubDate>Thu, 27 Oct 2011 13:41:43 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5a5c03fa-db55-4318-883a-0bcdca0cf85a</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-164778</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by hdjirus5</title>
      <description>&lt;p&gt;I would like to thanks for your nice job.you published a very good information all of us.I got some information about&#8230;..In your site.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.soswaterdamage.com/" rel="nofollow"&gt;mold remediation&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 26 Oct 2011 12:31:40 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b5738a84-b065-41c4-8962-a004cfb54a76</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-163993</link>
    </item>
    <item>
      <title>"Some C++ Fixtures for FitNesse.slim" by Good</title>
      <description>&lt;p&gt;I am really enjoying reading your well written articles. I&amp;#8217;ve bookmarked to check out new stuff you post.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.roofingexpertsonline.com/" rel="nofollow"&gt;metal roofing prices&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 26 Oct 2011 07:37:21 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f7caaeb4-6bf9-46b8-b652-6223ffd7069c</guid>
      <link>http://blog.objectmentor.com/articles/2010/07/22/some-c-fixtures-for-fitnesse-slim#comment-163968</link>
    </item>
  </channel>
</rss>

