# # patch "roster4.cc" # from [62bff556976d0137b764a869b4a50c515b1080b3] # to [932940676217dea1b5092203adefc3728085fc26] # # patch "roster4.hh" # from [1b6763285726bb28b83abcedade46374a37b7568] # to [cdc53ad3a448e8b3794f90468d8e9d944910f847] # ======================================================================== --- roster4.cc 62bff556976d0137b764a869b4a50c515b1080b3 +++ roster4.cc 932940676217dea1b5092203adefc3728085fc26 @@ -669,7 +669,8 @@ set singleton; singleton.insert(current_rid); parent_name = singleton; - file_content = singleton; + if (is_file_t(n)) + file_content = singleton; for (full_attr_map_t::const_iterator i = n->attrs.begin(); i != n->attrs.end(); ++i) attrs.insert(make_pair(i->first, singleton)); @@ -1953,12 +1954,43 @@ using boost::lexical_cast; static void +make_fake_marking_for(roster_t const & r, marking_map & mm) +{ + mm.clear(); + revision_id rid(std::string("0123456789abcdef0123456789abcdef01234567")); + for (node_map::const_iterator i = r.all_nodes().begin(); i != r.all_nodes().end(); + ++i) + mm.insert(std::make_pair(i->first, marking_t(rid, rid, i->second))); +} + +static void do_testing_on_one_roster(roster_t const & r) { MM(r); // read/write spin + data r_dat; MM(r_dat); + marking_map fm; + make_fake_marking_for(r, fm); + write_roster_and_marking(r, fm, r_dat, true); + roster_t r2; MM(r2); + marking_map fm2; + read_roster_and_marking(r_dat, r2, fm2); + I(r == r2); + I(fm == fm2); + data r2_dat; MM(r2_dat); + write_roster_and_marking(r2, fm2, r2_dat, true); + I(r_dat == r2_dat); + // dfs_iter should return the same number of items as there are items in // all_nodes() + int n; MM(n); + n = r.all_nodes().size(); + int dfs_counted = 0; MM(dfs_counted); + split_path root_name; + file_path().split(root_name); + for (dfs_iter i(downcast_to_dir_t(r.get_node(root_name))); !i.finished(); ++i) + ++dfs_counted; + I(n == dfs_counted); } static void @@ -2018,16 +2050,6 @@ } static void -make_fake_marking_for(roster_t const & r, marking_map & mm) -{ - mm.clear(); - revision_id rid(std::string("0123456789abcdef0123456789abcdef01234567")); - for (node_map::const_iterator i = r.all_nodes().begin(); i != r.all_nodes().end(); - ++i) - mm.insert(std::make_pair(i->first, marking_t(rid, rid, i->second))); -} - -static void tests_on_two_rosters(roster_t const & a, roster_t const & b, node_id_source & nis) { MM(a); ======================================================================== --- roster4.hh 1b6763285726bb28b83abcedade46374a37b7568 +++ roster4.hh cdc53ad3a448e8b3794f90468d8e9d944910f847 @@ -133,6 +133,13 @@ marking_t freshen(node_t old_node, node_t new_node, revision_id const & current_rid) const; + bool operator==(marking_t const & other) const + { + return birth_revision == other.birth_revision + && parent_name == other.parent_name + && file_content == other.file_content + && attrs == other.attrs; + } }; typedef std::map marking_map;