Changeset 803 for trunk/test


Ignore:
Timestamp:
Jul 11, 2009, 1:23:45 AM (12 years ago)
Author:
Peter Johansson
Message:

fixes #338 - partial cache now works

Location:
trunk/test
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/Suite.cc

    r801 r803  
    2929#include "../lib/utility.h"
    3030
     31#include <algorithm>
    3132#include <cassert>
    3233#include <fstream>
    3334#include <iostream>
     35#include <iterator>
    3436#include <string>
    3537
     
    9294
    9395
     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
    94194  bool equal(const StatsCollection& a, const StatsCollection& b,
    95195             Suite& suite)
     
    122222    if (a.authors() != b.authors()) {
    123223      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"));
    124230      return false;
    125231    }
  • trunk/test/Suite.h

    r801 r803  
    6868  };
    6969
     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
    7077  bool equal(const StatsCollection& a, const StatsCollection& b,
    7178             test::Suite& suite);
  • trunk/test/cache_partial_test.cc

    r801 r803  
    5454  File file(0,filename,"");
    5555  const StatsCollection& stats1 = file.parse(suite.verbose(), true);
     56  suite.add(test::consistent(stats1, suite));
    5657
    5758  // create file using partial cache
     
    5960  File file2(0,filename,"");
    6061  const StatsCollection& stats2 = file2.parse(suite.verbose(), false);
     62  suite.add(test::consistent(stats2, suite));
    6163
    6264  suite.add(equal(stats1, stats2, suite));
Note: See TracChangeset for help on using the changeset viewer.