~ubuntu-branches/ubuntu/trusty/fluxbox/trusty-proposed

« back to all changes in this revision

Viewing changes to src/tests/Resourcetest.cc

  • Committer: Package Import Robot
  • Author(s): Paul Tagliamonte
  • Date: 2010-08-12 21:16:02 UTC
  • mfrom: (0.1.1) (1.1.10)
  • Revision ID: package-import@ubuntu.com-20100812211602-3tsmzl9in5nmwz7z
Tags: 1.1.1+git20100807.0cc08f9-1
* debian/ dir has been cleaned out, complete repackage
  of most files.
* pulled new archive from git.fluxbox.org HEAD, saved as
  tar.gz.
* Added in fluxbox.* files from the old dfsg tree.
* Added in system.fluxbox-menu file from the old dfsg tree
* Added the source/format file to bump package source
  version from 1.0 to 3.0 (quilt). 
* Changed rules file to match the old dfsg setup so that
  fluxbox behaves nicely.
* Removed entries from copyright that no longer apply.
* Added theme based on Denis Brand ( naran )'s old theme.
* Added a background I whipped up.
* Changed compile flags to point to debian theme by default
* Adding a patch to have fluxbox use x-terminal-emulator
  over xterm. Closes: #591694 (LP: #580485)
* Adding a patch to allow titlebar-window dragging.
* Changed the flags in rules to pull from a script. This script
  lets us un-hardcode what theme is default. Be sure there
  is a theme pack!
* Added comments to my patches.
* Removing debian/docs, empty file.
* Fixing fluxbox.desktop to remove all the warnings from
  desktop-file-validate
* Fixing libtool issue by running an update before
  configure in the rules script.
* Added a compile flag script to auto-detect what platform
  we are running on, and apply the correct theme. This
  should solve Ubuntnu issues later on.
* adding in a get-orig-source rule
* fixing the upstream version number to pinpoint
  the commit ( thanks, lfaraone ).
* adding a rule for get-orig-source. ( thanks again,
  lfaraone ).
* Updated rules to actually allow us to do a build from it
* Removed Denis from the uploaders ( as per an email
  conversation )
* Removing madduck from the uploaders ( thanks for asking,
  lfaraone. ). Thanks for your hard work, madduck.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Resourcetest.cc
 
2
// Copyright (c) 2001 - 2006 Henrik Kinnunen (fluxgen at fluxbox dot org)
 
3
//
 
4
// Permission is hereby granted, free of charge, to any person obtaining a
 
5
// copy of this software and associated documentation files (the "Software"),
 
6
// to deal in the Software without restriction, including without limitation
 
7
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
 
8
// and/or sell copies of the Software, and to permit persons to whom the
 
9
// Software is furnished to do so, subject to the following conditions:
 
10
//
 
11
// The above copyright notice and this permission notice shall be included in
 
12
// all copies or substantial portions of the Software.
 
13
//
 
14
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
15
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
16
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.        IN NO EVENT SHALL
 
17
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
18
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
19
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 
20
// DEALINGS IN THE SOFTWARE.
 
21
 
 
22
#include "Resource.hh"
 
23
 
 
24
//use of strcasecmp 
 
25
#ifndef   _GNU_SOURCE
 
26
#define   _GNU_SOURCE
 
27
#endif // _GNU_SOURCE
 
28
 
 
29
#include <string>
 
30
#include <iostream>
 
31
#ifdef HAVE_CSTDIO
 
32
  #include <cstdio>
 
33
#else
 
34
  #include <stdio.h>
 
35
#endif
 
36
 
 
37
using namespace std;
 
38
 
 
39
enum TestEnum{TEST1, THIS_IS_TRUE, USE_LOVE};
 
40
 
 
41
//----------------
 
42
// Manipulators
 
43
//-----------------
 
44
 
 
45
template<>
 
46
void Resource<TestEnum>::
 
47
setFromString(const char *str) {
 
48
    if (strcasecmp(str, "TEST1")==0)
 
49
        *this = TEST1;
 
50
    else if (strcasecmp(str, "THIS_IS_TRUE")==0)
 
51
        *this = THIS_IS_TRUE;
 
52
    else if (strcasecmp(str, "USE_LOVE")==0)
 
53
        *this = USE_LOVE;
 
54
}
 
55
 
 
56
template<>
 
57
void Resource<int>::
 
58
setFromString(const char* strval) {
 
59
    int val;
 
60
    if (sscanf(strval, "%d", &val)==1)
 
61
        *this = val;
 
62
}
 
63
 
 
64
template<>
 
65
void Resource<std::string>::
 
66
setFromString(const char *strval) {
 
67
    *this = strval;
 
68
}
 
69
 
 
70
template<>
 
71
void Resource<bool>::
 
72
setFromString(char const *strval) {
 
73
    if (strcasecmp(strval, "true")==0)
 
74
        *this = true;
 
75
    else
 
76
        *this = false;
 
77
}
 
78
 
 
79
//-----------------
 
80
// accessors 
 
81
//-----------------
 
82
template<>
 
83
std::string Resource<TestEnum>::
 
84
getString() {
 
85
    switch (m_value) {
 
86
    case TEST1:
 
87
        return string("TEST1");
 
88
    case THIS_IS_TRUE:
 
89
        return string("THIS_IS_TRUE");
 
90
    case USE_LOVE:
 
91
        return string("USE_LOVE");
 
92
    }
 
93
    return string("");
 
94
}
 
95
 
 
96
template<>
 
97
std::string Resource<bool>::
 
98
getString() {                           
 
99
    return std::string(**this == true ? "true" : "false");
 
100
}
 
101
 
 
102
template<>
 
103
std::string Resource<int>::
 
104
getString() {
 
105
    char strval[256];
 
106
    sprintf(strval, "%d", **this);
 
107
    return std::string(strval);
 
108
}
 
109
 
 
110
template<>
 
111
std::string Resource<string>::
 
112
getString() { return **this; }
 
113
 
 
114
int main(int argc, char **argv) {
 
115
        
 
116
    ResourceManager rm;
 
117
    // resources
 
118
    Resource<int> val(rm, 123, "session.test", "Session.Test");
 
119
    Resource<bool> boolval(rm, true, "session.bool", "Session.Bool");
 
120
    Resource<string> strval(rm, "none", "string", "String");
 
121
    Resource<TestEnum> enumval(rm, TEST1, "enumval", "EnumVal");
 
122
 
 
123
    const char *defaultfile_open = "res", 
 
124
        *defaultfile_save = "res_save";
 
125
 
 
126
    if (argc>1) {
 
127
        if(!rm.load(argv[1]))
 
128
            cerr<<"Faild to load database: "<<argv[1]<<endl;
 
129
    } else {
 
130
        if (!rm.load(defaultfile_open))
 
131
            cerr<<"Faild to load database: "<<defaultfile_open<<endl;
 
132
    }
 
133
    cerr<<"Value="<<*val<<endl;
 
134
    cerr<<"boolValue="<<boolval.getString()<<endl;
 
135
    cerr<<"strValue="<<*strval<<endl;
 
136
    cerr<<"enumValue="<<enumval.getString()<<endl;
 
137
        
 
138
    if (!rm.save(defaultfile_save))
 
139
        cerr<<"Faild to save database to file:"<<defaultfile_save<<endl;
 
140
 
 
141
    if (!rm.save("I dont exist", "Not me either"))
 
142
        cerr<<"faild to save and merge database."<<endl;
 
143
    return 0;
 
144
}