Blame samples/stringto-test.cpp

Packit Service 21b5d1
// ***************************************************************** -*- C++ -*-
Packit Service 21b5d1
// stringto-test.cpp
Packit Service 21b5d1
// Test conversions from string to long, float and Rational types.
Packit Service 21b5d1
Packit Service 21b5d1
#include <exiv2/exiv2.hpp>
Packit Service 21b5d1
Packit Service 21b5d1
#include <iostream>
Packit Service 21b5d1
#include <iomanip>
Packit Service 21b5d1
Packit Service 21b5d1
const char* testcases[] = {
Packit Service 21b5d1
    // bool
Packit Service 21b5d1
    "True",
Packit Service 21b5d1
    "False",
Packit Service 21b5d1
    "t",
Packit Service 21b5d1
    "f",
Packit Service 21b5d1
    // long
Packit Service 21b5d1
    "-1",
Packit Service 21b5d1
    "0",
Packit Service 21b5d1
    "1",
Packit Service 21b5d1
    // float
Packit Service 21b5d1
    "0.0",
Packit Service 21b5d1
    "0.1",
Packit Service 21b5d1
    "0.01",
Packit Service 21b5d1
    "0.001",
Packit Service 21b5d1
    "-1.49999",
Packit Service 21b5d1
    "-1.5",
Packit Service 21b5d1
    "1.49999",
Packit Service 21b5d1
    "1.5",
Packit Service 21b5d1
    // Rational
Packit Service 21b5d1
    "0/1",
Packit Service 21b5d1
    "1/1",
Packit Service 21b5d1
    "1/3",
Packit Service 21b5d1
    "-1/3",
Packit Service 21b5d1
    "4/3",
Packit Service 21b5d1
    "-4/3",
Packit Service 21b5d1
    "0/0",
Packit Service 21b5d1
    // nok
Packit Service 21b5d1
    "text"
Packit Service 21b5d1
};
Packit Service 21b5d1
Packit Service 21b5d1
int main()
Packit Service 21b5d1
{
Packit Service 21b5d1
    std::cout << std::setfill(' ');
Packit Service 21b5d1
Packit Service 21b5d1
    std::cout << std::setw(12) << std::left << "string";
Packit Service 21b5d1
    std::cout << std::setw(12) << std::left << "long";
Packit Service 21b5d1
    std::cout << std::setw(12) << std::left << "float";
Packit Service 21b5d1
    std::cout << std::setw(12) << std::left << "Rational";
Packit Service 21b5d1
Packit Service 21b5d1
    std::cout << std::endl;
Packit Service 21b5d1
Packit Service 21b5d1
    for (unsigned int i = 0; i < EXV_COUNTOF(testcases); ++i) try {
Packit Service 21b5d1
        std::string s(testcases[i]);
Packit Service 21b5d1
        std::cout << std::setw(12) << std::left << s;
Packit Service 21b5d1
        bool ok;
Packit Service 21b5d1
Packit Service 21b5d1
        long l = Exiv2::parseLong(s, ok);
Packit Service 21b5d1
        std::cout << std::setw(12) << std::left;
Packit Service 21b5d1
        if (ok) std::cout << l; else std::cout << "nok";
Packit Service 21b5d1
Packit Service 21b5d1
        float f = Exiv2::parseFloat(s, ok);
Packit Service 21b5d1
        std::cout << std::setw(12) << std::left;
Packit Service 21b5d1
        if (ok) std::cout << f; else std::cout << "nok";
Packit Service 21b5d1
Packit Service 21b5d1
        Exiv2::Rational r = Exiv2::parseRational(s, ok);
Packit Service 21b5d1
        if (ok) std::cout << r.first << "/" << r.second;
Packit Service 21b5d1
        else std::cout << "nok";
Packit Service 21b5d1
Packit Service 21b5d1
        std::cout << std::endl;
Packit Service 21b5d1
    }
Packit Service 21b5d1
    catch (Exiv2::AnyError& e) {
Packit Service 21b5d1
        std::cout << "Caught Exiv2 exception '" << e << "'\n";
Packit Service 21b5d1
        return -1;
Packit Service 21b5d1
    }
Packit Service 21b5d1
Packit Service 21b5d1
    return 0;
Packit Service 21b5d1
}