Milena (Olena)
User documentation 2.0a Id
|
00001 // Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE) 00002 // 00003 // This file is part of Olena. 00004 // 00005 // Olena is free software: you can redistribute it and/or modify it under 00006 // the terms of the GNU General Public License as published by the Free 00007 // Software Foundation, version 2 of the License. 00008 // 00009 // Olena is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU General Public License 00015 // along with Olena. If not, see <http://www.gnu.org/licenses/>. 00016 // 00017 // As a special exception, you may use this file as part of a free 00018 // software project without restriction. Specifically, if other files 00019 // instantiate templates or use macros or inline functions from this 00020 // file, or you compile this file and link it with other files to produce 00021 // an executable, this file does not by itself cause the resulting 00022 // executable to be covered by the GNU General Public License. This 00023 // exception does not however invalidate any other reasons why the 00024 // executable file might be covered by the GNU General Public License. 00025 00026 #include <mln/accu/stat/rank.hh> 00027 #include <mln/value/int_u8.hh> 00028 00029 00030 00031 template <typename A> 00032 void fill(mln::Accumulator<A>& accu_) 00033 { 00034 A& accu = exact(accu_); 00035 accu.take(2); 00036 accu.take(3); 00037 accu.take(1); 00038 accu.take(4); 00039 accu.take(5); 00040 accu.take(5); 00041 accu.take(2); 00042 accu.take(5); 00043 } 00044 00045 00046 int main() 00047 { 00048 using namespace mln; 00049 using value::int_u8; 00050 00051 { 00052 accu::meta::stat::rank r(4); 00053 accu::stat::rank<int_u8> a = accu::unmeta(r, int_u8()); 00054 mln_assertion(a.k() == 4); 00055 // Meta_Accumulator<accu::meta::stat::rank>& R = r; 00056 // accu::unmeta(R, int_u8()); 00057 } 00058 00059 { 00060 accu::stat::rank<int_u8> accu(0); 00061 fill(accu); 00062 mln_assertion(accu.to_result() == 1u); 00063 } 00064 { 00065 accu::stat::rank<int_u8> accu(1); 00066 fill(accu); 00067 mln_assertion(accu.to_result() == 2u); 00068 } 00069 { 00070 accu::stat::rank<int_u8> accu(2); 00071 fill(accu); 00072 mln_assertion(accu.to_result() == 2u); 00073 } 00074 { 00075 accu::stat::rank<int_u8> accu(3); 00076 fill(accu); 00077 mln_assertion(accu.to_result() == 3u); 00078 } 00079 { 00080 accu::stat::rank<int_u8> accu(4); 00081 fill(accu); 00082 mln_assertion(accu.to_result() == 4u); 00083 } 00084 { 00085 accu::stat::rank<int_u8> accu(5); 00086 fill(accu); 00087 mln_assertion(accu.to_result() == 5u); 00088 } 00089 { 00090 accu::stat::rank<int_u8> accu(6); 00091 fill(accu); 00092 mln_assertion(accu.to_result() == 5u); 00093 } 00094 { 00095 accu::stat::rank<int_u8> accu(7); 00096 fill(accu); 00097 mln_assertion(accu.to_result() == 5u); 00098 } 00099 { 00100 accu::stat::rank<bool> accu_bool(1); 00101 accu_bool.take(true); 00102 accu_bool.take(true); 00103 accu_bool.take(true); 00104 accu_bool.take(true); 00105 accu_bool.take(false); 00106 mln_assertion(accu_bool == true); 00107 } 00108 }