/**
* @file cached_value_tests.cpp
* tests cached_value.h
*
* @remark Copyright 2005 OProfile authors
* @remark Read the file COPYING
*
* @author John Levon
*/
#include <cstdlib>
#include <iostream>
#include <string>
#include "cached_value.h"
using namespace std;
namespace {
bool check_throw(cached_value<bool> const & boolval)
{
try {
bool foo = boolval.get();
foo = false;
} catch (op_fatal_error const & e) {
return true;
}
return false;
}
int check_cached(void)
{
cached_value<bool> boolval;
cached_value<string> strval;
if (!check_throw(boolval)) {
cerr << "get() on no value didn't throw\n";
return EXIT_FAILURE;
}
if (boolval.reset(false) != false || boolval.get() != false) {
cerr << "reset() of cached value \"false\" didn't work\n";
return EXIT_FAILURE;
}
if (boolval.reset(true) != true || boolval.get() != true) {
cerr << "reset() of cached value \"true\" didn't work\n";
return EXIT_FAILURE;
}
if (strval.reset("foo") != "foo" || strval.get() != "foo") {
cerr << "reset() of cached value \"foo\" didn't work\n";
return EXIT_FAILURE;
}
if (strval.reset("") != "" || strval.get() != "") {
cerr << "reset() of cached value \"\" didn't work\n";
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
};
int main()
{
try {
check_cached();
}
catch (...) {
cerr << "unknown exception\n";
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}