00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
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
00056
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 }