/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ /* $Rev$ $Date$ */ /** * Test ATOM data conversion functions. */ #include #include #include #include #include "slist.hpp" #include "atom.hpp" namespace tuscany { namespace atom { std::ostringstream* writer(const std::string& s, std::ostringstream* os) { (*os) << s; return os; } std::string itemEntry("\n" "" "item" "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b" "" "" "Apple$2.99" "" "" "" "\n"); std::string incompleteEntry("" "item" "" "Orange" "3.55" "" "" ""); std::string completedEntry("\n" "" "item" "" "" "" "Orange" "3.55" "" "" "\n"); bool testEntry() { { const list i = list() << element << "item" << (list() << element << "name" << std::string("Apple")) << (list() << element << "price" << std::string("$2.99")); const list a = mklist(std::string("item"), std::string("cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b"), i); std::ostringstream os; writeATOMEntry(writer, &os, a); assert(os.str() == itemEntry); } { const list a = readEntry(mklist(itemEntry)); std::ostringstream os; writeATOMEntry(writer, &os, a); assert(os.str() == itemEntry); } { const list a = readEntry(mklist(incompleteEntry)); std::ostringstream os; writeATOMEntry(writer, &os, a); assert(os.str() == completedEntry); } return true; } std::string emptyFeed("\n" "" "Feed" "1234" "\n"); std::string itemFeed("\n" "" "Feed" "1234" "" "item" "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b" "" "" "Apple$2.99" "" "" "" "" "" "item" "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83c" "" "" "Orange$3.55" "" "" "" "" "\n"); bool testFeed() { { std::ostringstream os; writeATOMFeed(writer, &os, mklist("Feed", "1234")); assert(os.str() == emptyFeed); } { const list a = readFeed(mklist(emptyFeed)); std::ostringstream os; writeATOMFeed(writer, &os, a); assert(os.str() == emptyFeed); } { const list i = list() << (list() << "item" << "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b" << (list() << element << "item" << (list() << element << "name" << "Apple") << (list() << element << "price" << "$2.99"))) << (list() << "item" << "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83c" << (list() << element << "item" << (list() << element << "name" << "Orange") << (list() << element << "price" << "$3.55"))); const list a = cons("Feed", cons("1234", i)); std::ostringstream os; writeATOMFeed(writer, &os, a); assert(os.str() == itemFeed); } { const list i = list() << (list() << "item" << "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b" << valueToElement(list() << "item" << (list() << "name" << "Apple") << (list() << "price" << "$2.99"))) << (list() << "item" << "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83c" << valueToElement(list() << "item" << (list() << "name" << "Orange") << (list() << "price" << "$3.55"))); const list a = cons("Feed", cons("1234", i)); std::ostringstream os; writeATOMFeed(writer, &os, a); assert(os.str() == itemFeed); } { const list a = readFeed(mklist(itemFeed)); std::ostringstream os; writeATOMFeed(writer, &os, a); assert(os.str() == itemFeed); } return true; } } } int main() { std::cout << "Testing..." << std::endl; tuscany::atom::testEntry(); tuscany::atom::testFeed(); std::cout << "OK" << std::endl; return 0; }