void test_properties() { std::vector<boost::shared_ptr<cygnal::Element> > data1; const char *str1 = "property one"; boost::shared_ptr<cygnal::Element> prop1(new Element(str1)); data1.push_back(prop1); string str2 = "property two"; boost::shared_ptr<cygnal::Element> prop2(new Element(str2)); data1.push_back(prop2); boost::shared_ptr<cygnal::Element> prop3(new Element("property three")); data1.push_back(prop3); double num = 123.456; boost::shared_ptr<cygnal::Element> prop4(new Element(num)); data1.push_back(prop4); Element top; top.makeObject("app", data1); if ((top.propertySize() == 4) && (top.getType() == Element::OBJECT_AMF0) && (strcmp(top[0]->to_string(), str1) == 0) && (top[1]->to_string() == str2) && (strcmp(top[2]->to_string(), "property three") == 0) && (top[3]->to_number() == num)) { runtest.pass("Made object with properties"); } else { runtest.fail("Made object with properties"); } data1.clear(); top.makeECMAArray(data1); if ((top.propertySize() == 4) && (top.getType() == Element::ECMA_ARRAY_AMF0) && (strcmp(top[0]->to_string(), str1) == 0) && (top[1]->to_string() == str2) && (strcmp(top[2]->to_string(), "property three") == 0) && (top[3]->to_number() == num)) { runtest.pass("Made ECMA array"); } else { runtest.fail("Made ECMA array"); } data1.clear(); top.makeStrictArray(data1); if ((top.propertySize() == 4) && (top.getType() == Element::STRICT_ARRAY_AMF0) && (strcmp(top[0]->to_string(), str1) == 0) && (top[1]->to_string() == str2) && (strcmp(top[2]->to_string(), "property three") == 0) && (top[3]->to_number() == num)) { runtest.pass("Made strict array"); } else { runtest.fail("Made strict array"); } // top.dump(); }
void test_construct() { // Test creating number elements. An element with a name is a property. double dub = 23.45; bool flag = true; string str = "Guten Tag"; Element elnum1(dub); if ((elnum1.getType() == Element::NUMBER_AMF0) && (elnum1.to_number() == dub)) { runtest.pass("Constructed as double element"); } else { runtest.fail("Constructed as double element"); } flag = true; Element elbool1(flag); if ((elbool1.getType() == Element::BOOLEAN_AMF0) && (elbool1.to_bool() == true)) { runtest.pass("Constructed as bool element"); } else { runtest.fail("Constructed as bool element"); } Element elstr1(str); if ((elstr1.getType() == Element::STRING_AMF0) && (elstr1.getDataSize() == str.size())) { runtest.pass("Constructed as string element"); } else { runtest.fail("Constructed as string element"); } // And now test constrcutors with variable names dub = 23.45; Element elnum2(dub); if ((elnum2.getType() == Element::NUMBER_AMF0) && (elnum2.to_number() == dub)) { runtest.pass("Constructed as double element with name"); } else { runtest.fail("Constructed as double element with name"); } flag = true; Element elbool2(flag); if ((elbool2.getType() == Element::BOOLEAN_AMF0) && (elbool2.to_bool() == true)) { runtest.pass("Constructed as bool element with name"); } else { runtest.fail("Constructed as bool element with name"); } str = "Aloha"; Element elstr2(str); if ((elstr2.getType() == Element::STRING_AMF0) && (elstr2.getDataSize() == str.size())) { runtest.pass("Constructed as string element with name"); } else { runtest.fail("Constructed as string element with name"); } }
int main(int argc, char *argv[]) { // FIXME: for now, always run verbose till this supports command line args dbglogfile.setVerbosity(); rawfb::RawFBDevice rfb; if (!rfb.initDevice(argc, argv)) { runtest.fail("RawFBDevice:InitDevice()"); } else { runtest.pass("RawFBDevice:InitDevice()"); } bool ret = rfb.attachWindow(rfb.getHandle()); if (rfb.getFBMemory()) { runtest.pass("RawFBDevice::attachWindow()"); } else { runtest.fail("RawFBDevice::attachWindow()"); } #ifdef ENABLE_DOUBLE_BUFFERING if (rfb.getOffscreenBuffer()) { runtest.pass("RawFBDevice::getOffscreenBuffer()"); } else { runtest.fail("RawFBDevice::getOffscreenBuffer()"); } #else runtest.untested("RawFBDevice::getOffscreenBuffer()"); #endif if (ret && rfb.getStride()) { runtest.pass("RawFBDevice::getStride()"); } else { runtest.fail("RawFBDevice::getStride()"); } if (ret && rfb.getWidth()) { runtest.pass("RawFBDevice::getWidth()"); } else { runtest.fail("RawFBDevice::getWidth()"); } if (ret && rfb.getHeight()) { runtest.pass("RawFBDevice::getHeight()"); } else { runtest.fail("DirecTFBDevice::getHeight()"); } if (ret && rfb.isSingleBuffered()) { runtest.pass("RawFBDevice::is*Buffered()"); } else { runtest.fail("RawFBDevice::is*Buffered()"); } if (ret && rfb.getDepth()) { runtest.pass("RawFBDevice::getDepth()"); } else { runtest.fail("RawFBDevice::getDepth()"); } if (ret && rfb.getRedSize() > 0) { runtest.pass("RawFBDevice::getRedSize()"); } else { runtest.fail("RawFBDevice::getRedSize()"); } if (ret && rfb.getGreenSize() > 0) { runtest.pass("RawFBDevice::getGreenSize()"); } else { runtest.fail("RawFBDevice::getGreenSize()"); } if (ret && rfb.getBlueSize() > 0) { runtest.pass("RawFBDevice::getBlueSize()"); } else { runtest.fail("RawFBDevice::getBlueSize()"); } #if 0 if (rfb.setGrayscaleLUT8()) { runtest.pass("RawFBDevice::setGrayscaleLUT8()"); } else { runtest.fail("RawFBDevice::setGrayscaleLUT8()"); } #endif // AGG uses these to calculate the poixel format #ifdef RENDERER_AGG if (ret && rfb.getRedOffset() > 0) { runtest.pass("RawFBDevice::getRedOffset()"); } else { runtest.fail("RawFBDevice::getRedOffset()"); } if (ret && rfb.getGreenOffset() > 0) { runtest.pass("RawFBDevice::getGreenOffset()"); } else { runtest.fail("RawFBDevice::getGreenOffset()"); } if (ret && rfb.getBlueOffset() == 0) { runtest.pass("RawFBDevice::getBlueOffset()"); } else { runtest.fail("RawFBDevice::getBlueOffset()"); } #endif // This is a manual test to see if we can draw a line on the // raw framebuffer to make sure it got initialized correctly. int x = 0, y = 0; long location = 0; int line_length = rfb.getStride(); boost::uint8_t *fbp = 0; fbp = rfb.getFBMemory(); for(y=100; y<102; y++); /* Where we are going to put the pixel */ for(x=0; x<200; x++) { /* Figure out where in memory to put the pixel */ location = x * (rfb.getDepth()/8) + y * line_length; *(fbp + location) = 89; /* Some blue */ *(fbp + location + 1) = 40; /* A little green */ *(fbp + location + 2) = 200; /* A lot of red */ *(fbp + location + 3) = 0; /* No transparency */ } }