1// { dg-options "-std=gnu++11" } 2// Use smaller statistics when running on simulators, so it takes less time. 3// For x86_64-linux-gnu SAMPLES=30000 fails, so increase slightly. 4// { dg-options "-std=gnu++11 -DSAMPLES=35000" { target simulator } } 5 6// Copyright (C) 2010-2015 Free Software Foundation, Inc. 7// 8// This file is part of the GNU ISO C++ Library. This library is free 9// software; you can redistribute it and/or modify it under the 10// terms of the GNU General Public License as published by the 11// Free Software Foundation; either version 3, or (at your option) 12// any later version. 13// 14// This library is distributed in the hope that it will be useful, 15// but WITHOUT ANY WARRANTY; without even the implied warranty of 16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17// GNU General Public License for more details. 18// 19// You should have received a copy of the GNU General Public License 20// along with this library; see the file COPYING3. If not see 21// <http://www.gnu.org/licenses/>. 22 23#include "chi2_quality.h" 24 25// Tests chi^2 of a set of strings that all have a similar pattern, 26// intended to mimic some sort of ID string. 27void 28test_numeric_pattern_set() 29{ 30 bool test __attribute__((unused)) = true; 31 const unsigned long N = SAMPLES; 32 const unsigned long k = N/100; 33 std::vector<std::string> set; 34 for (unsigned long i = 0; i < N; ++i) 35 { 36 long i1 = i % 100000; 37 long i2 = i / 100000; 38 char buf[16]; 39 std::sprintf(buf, "XX-%05lu-%05lu", i1, i2); 40 set.push_back(buf); 41 } 42 43 double chi2 = chi2_hash(set, k); 44 VERIFY( chi2 < k*1.1 ); 45} 46 47int 48main() 49{ 50 test_numeric_pattern_set(); 51 return 0; 52} 53