Ignore:
Timestamp:
Nov 16, 2009, 11:27:19 PM (12 years ago)
Author:
Jari Häkkinen
Message:

Merged trunk changes -r782:844 to replacing_gnuplot branch.

Location:
branches/replacing_gnuplot/test
Files:
7 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/replacing_gnuplot/test/Makefile.am

    r787 r845  
    33## $Id$
    44
    5 # Copyright (C) 2005, 2006, 2007, 2008 Jari Häkkinen, Peter Johansson
    6 # Copyright (C) 2009 Peter Johansson
     5# Copyright (C) 2005, 2006, 2007, 2008, 2009 Jari Häkkinen, Peter Johansson
    76#
    87# This file is part of svndigest, http://dev.thep.lu.se/svndigest
     
    2322check_SCRIPTS = svn_update.sh
    2423
    25 check_PROGRAMS = config_test copyright_test date_test \
     24check_PROGRAMS = cache_partial_test config_test copyright_test  \
     25  date_test \
    2626  parser_test stats_test trac_test utility_test
    2727
     
    3838LDADD = $(builddir)/libsvndigesttest.a \
    3939  $(top_builddir)/lib/libsvndigest.a \
     40  $(top_builddir)/lib/yat/libyat.a \
    4041  $(SVNDIGEST_LIBS)
    4142AM_LDFLAGS = $(SVNDIGEST_LDFLAGS)
     
    4647libsvndigesttest_a_SOURCES = Suite.cc
    4748
     49cache_partial_test_SOURCES = cache_partial_test.cc
    4850config_test_SOURCES = config_test.cc
    4951copyright_test_SOURCES = copyright_test.cc
  • branches/replacing_gnuplot/test/Suite.cc

    r784 r845  
    2525#include "environment.h"
    2626
    27 #include "utility.h"
    28 
     27#include "Stats.h"
     28#include "StatsCollection.h"
     29#include "../lib/utility.h"
     30
     31#include <algorithm>
    2932#include <cassert>
    3033#include <fstream>
    3134#include <iostream>
     35#include <iterator>
    3236#include <string>
    3337
     
    9094
    9195
     96  bool check_all(const Stats& stats, test::Suite& suite)
     97  {
     98    for (int lt=0; lt<=LineTypeParser::total; ++lt) {
     99      for (svn_revnum_t rev=0; rev<=stats.revision(); ++rev) {
     100        size_t all = 0;
     101        for (std::set<std::string>::const_iterator a=stats.authors().begin();
     102             a!=stats.authors().end(); ++a) {
     103          all += stats(lt, *a, rev);
     104        }
     105        if (all!=stats(lt, "all", rev)) {
     106          suite.out() << "error: check_all\n"
     107                      << " lt = " << lt << "\n"
     108                      << " rev = " << rev << "\n"
     109                      << " all = " << all << "\n"
     110                      << " stats = " << stats(lt, "all", rev) << "\n";
     111          for (std::set<std::string>::const_iterator a=stats.authors().begin();
     112               a!=stats.authors().end(); ++a) {
     113            suite.out() << *a << " " << stats(lt, *a, rev) << "\n";
     114          }
     115          return false;
     116        }
     117      }
     118    }
     119    return true;
     120  }
     121 
     122
     123  bool check_total(const Stats& stats, test::Suite& suite)
     124  {
     125    for (svn_revnum_t rev=0; rev<=stats.revision(); ++rev) {
     126      for (std::set<std::string>::const_iterator a=stats.authors().begin();
     127           a!=stats.authors().end(); ++a) {
     128        unsigned int total=0;
     129        for (int lt=0; lt<4; ++lt) {
     130          total += stats(lt, *a, rev);
     131        }
     132        unsigned int total2=stats(LineTypeParser::total, *a, rev);
     133       
     134        if (total!=total2) {
     135          suite.out() << "error: check_total\n"
     136                      << " author = " << *a << "\n"
     137                      << " rev = " << rev << "\n"
     138                      << " sum = " << total << "\n"
     139                      << " total = " << total2 << "\n";
     140          return false;
     141        }
     142      }
     143    }
     144    return true;
     145  }
     146 
     147
     148  bool check_comment_or_copy(const Stats& stats, test::Suite& suite)
     149  {
     150    for (svn_revnum_t rev=0; rev<=stats.revision(); ++rev) {
     151      for (std::set<std::string>::const_iterator a=stats.authors().begin();
     152           a!=stats.authors().end(); ++a) {
     153        unsigned int x=stats(LineTypeParser::comment, *a, rev);
     154        x+=stats(LineTypeParser::copyright, *a, rev);
     155        unsigned int y=stats(LineTypeParser::comment_or_copy, *a, rev);
     156       
     157        if (x!=y) {
     158          suite.out() << "error: check_total\n"
     159                      << " author = " << *a << "\n"
     160                      << " rev = " << rev << "\n"
     161                      << " comment + copyright = " << x << "\n"
     162                      << " comment_or_copy = " << y << "\n";
     163          return false;
     164        }
     165      }
     166    }
     167    return true;
     168  }
     169
     170
     171  bool consistent(const StatsCollection& sc, test::Suite& suite)
     172  {
     173    std::map<std::string, Stats*>::const_iterator iter = sc.stats().begin();
     174    while (iter != sc.stats().end()) {
     175      if (!consistent(*iter->second, suite)) {
     176        suite.out() << "error in " << iter->first << "\n";
     177        return false;
     178      }
     179      ++iter;
     180    }
     181    return true;
     182  }
     183
     184
     185  bool consistent(const Stats& stats, test::Suite& suite)
     186  {
     187    suite.add(check_all(stats, suite));
     188    suite.add(check_total(stats, suite));
     189    suite.add(check_comment_or_copy(stats, suite));
     190    return true;
     191  }
     192
     193
     194  bool equal(const StatsCollection& a, const StatsCollection& b,
     195             Suite& suite)
     196  {
     197    if (a.stats().size() != b.stats().size()) {
     198      suite.out() << "size mismatch\n";
     199      return false;
     200    }
     201    std::map<std::string, Stats*>::const_iterator iter1 = a.stats().begin();
     202    std::map<std::string, Stats*>::const_iterator iter2 = b.stats().begin();
     203    while (iter1 != a.stats().end()) {
     204      if (iter1->first != iter2->first) {
     205        suite.out() << "key mismatch\n";
     206        suite.out() << iter1->first << " vs " << iter2->first << "\n";
     207        return false;
     208      }
     209      if (!equal(*iter1->second, *iter2->second, suite)) {
     210        suite.out() << "error in " << iter1->first << "\n";
     211        return false;
     212      }
     213      ++iter1;
     214      ++iter2;
     215    }
     216    return true;
     217  }
     218 
     219
     220  bool equal(const Stats& a, const Stats& b, test::Suite& suite)
     221  {
     222    if (a.authors() != b.authors()) {
     223      suite.out() << "authors are not equal\n";
     224      suite.out() << "lhs:\n";
     225      std::copy(a.authors().begin(), a.authors().end(),
     226                std::ostream_iterator<std::string>(suite.out(), "\n"));
     227      suite.out() << "rhs:\n";
     228      std::copy(b.authors().begin(), b.authors().end(),
     229                std::ostream_iterator<std::string>(suite.out(), "\n"));
     230      return false;
     231    }
     232    if (a.revision() != b.revision()) {
     233      suite.out() << "revision mismatch\n";
     234      return false;
     235    }
     236    std::vector<std::string> authors;
     237    authors.reserve(a.authors().size()+1);
     238    std::copy(a.authors().begin(), a.authors().end(),
     239              std::back_inserter(authors));
     240    authors.push_back("all");
     241    for (int linetype=0; linetype <= LineTypeParser::total; ++linetype) {
     242      for (std::vector<std::string>::const_iterator author=authors.begin();
     243           author!=authors.end(); ++author) {
     244        for (svn_revnum_t rev=0; rev<a.revision(); ++rev) {
     245          size_t ax = a(linetype, *author, rev);
     246          size_t bx = b(linetype, *author, rev);
     247          if (ax != bx) {
     248            suite.out() << "error: linetype: " << linetype
     249                        << " author " << *author 
     250                        << " rev " << rev << "\n"
     251                        << "   a: " << ax << "\n"
     252                        << "   b: " << bx << "\n";
     253            return false;
     254          }
     255        }
     256      }
     257    }
     258    return true;
     259  }
     260
     261
    92262  void Suite::update_test_wc(void) const
    93263  {
     
    114284
    115285
     286  std::string src_filename(const std::string& path)
     287  {
     288    return abs_srcdir()+"/"+path;
     289  }
     290
     291
    116292}}}
  • branches/replacing_gnuplot/test/Suite.h

    r784 r845  
    2929namespace theplu {
    3030namespace svndigest {
     31  class Stats;
     32  class StatsCollection;
     33
    3134namespace test {
    3235
     
    6568  };
    6669
     70  bool check_all(const Stats&, test::Suite&);
     71  bool check_total(const Stats&, test::Suite&);
     72  bool check_comment_or_copy(const Stats&, test::Suite&);
     73
     74  bool consistent(const StatsCollection&, test::Suite&);
     75  bool consistent(const Stats&, test::Suite&);
     76
     77  bool equal(const StatsCollection& a, const StatsCollection& b,
     78             test::Suite& suite);
     79
     80  bool equal(const Stats& a, const Stats& b, test::Suite& suite);
     81
    6782  /**
    6883     \return absolute path to file
    69      \param local_path path relative to srcdir
     84     \param local_path path relative to builddir
    7085   */
    7186  std::string filename(const std::string& local_path);
    7287
     88  /**
     89     \return absolute path to file
     90     \param path path relative to srcdir
     91   */
     92  std::string src_filename(const std::string& path);
    7393}}}
    7494
  • branches/replacing_gnuplot/test/config_test.cc

    r784 r845  
    22
    33/*
    4   Copyright (C) 2008 Peter Johansson
     4  Copyright (C) 2008, 2009 Peter Johansson
    55
    66  This file is part of svndigest, http://dev.thep.lu.se/svndigest
     
    4949    bool ok =true;
    5050    if (!c.codon("foo.h")){
    51       std::cerr << "No codon for test.cc\n";
     51      std::cerr << "No codon for foo.h\n";
    5252      ok = false;
    5353    }
  • branches/replacing_gnuplot/test/repo/db/current

    r591 r845  
    1 61 1n 4
     164 1y 4
  • branches/replacing_gnuplot/test/test_repo.sh.in

    r784 r845  
    3232fi
    3333
     34while test $# -gt 0; do
     35    case "$1" in
     36    -v)
     37    VERBOSE=1
     38    ;;
     39    esac
     40    shift
     41done
     42
     43if test -z "$VERBOSE"; then
     44  exec > /dev/null
     45fi
     46
    3447cd $abs_builddir && @SHELL@ svn_update.sh || exit 1;
    3548
     
    3750
    3851$abs_top_builddir/bin/svndigest -r $rootdir -t $targetdir \
    39 --ignore-cache --no-report $1;
     52--ignore-cache --no-report --verbose;
    4053
    41 $abs_top_builddir/bin/svndigest -r $rootdir -t $targetdir -f $1;
    42 
     54$abs_top_builddir/bin/svndigest -r $rootdir -t $targetdir -vf;
  • branches/replacing_gnuplot/test/utility_test.cc

    r784 r845  
    2121*/
    2222
    23 #include "utility.h"
     23#include "../lib/utility.h"
    2424
    2525#include <algorithm>
Note: See TracChangeset for help on using the changeset viewer.