|
@@ -32,4 +32,65 @@ void series_tests() {
|
|
|
assert(array[i] == items[i]);
|
|
assert(array[i] == items[i]);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ Test.add_func("/invercargill/structure/series/stores_owned_copies_of_temporaries", () => {
|
|
|
|
|
+ var series = new Series<string>();
|
|
|
|
|
+ string source = "stable";
|
|
|
|
|
+ for(int i = 0; i < 100; i++) {
|
|
|
|
|
+ series.add("temporary-%d".printf(i));
|
|
|
|
|
+ series.add(source.dup());
|
|
|
|
|
+ }
|
|
|
|
|
+ series.clear();
|
|
|
|
|
+ for(int i = 0; i < 100; i++) {
|
|
|
|
|
+ series.add("temporary-%d".printf(i));
|
|
|
|
|
+ series.add(source.dup());
|
|
|
|
|
+ }
|
|
|
|
|
+ uint found = 0;
|
|
|
|
|
+ foreach(var item in series) {
|
|
|
|
|
+ if(item.has_prefix("temporary-") || item == "stable") {
|
|
|
|
|
+ found++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ assert(found == series.count());
|
|
|
|
|
+ assert(found == 200);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ Test.add_func("/invercargill/structure/series/pop_start_releases_ownership", () => {
|
|
|
|
|
+ var probe = new OwnershipProbe();
|
|
|
|
|
+ var series = new Series<OwnershipProbe>();
|
|
|
|
|
+ series.add(probe);
|
|
|
|
|
+ assert(probe.ref_count == 2);
|
|
|
|
|
+ try {
|
|
|
|
|
+ series.pop_start();
|
|
|
|
|
+ }
|
|
|
|
|
+ catch(SequenceError e) {
|
|
|
|
|
+ assert_not_reached();
|
|
|
|
|
+ }
|
|
|
|
|
+ assert(probe.ref_count == 1);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ Test.add_func("/invercargill/structure/series/remove_where_releases_ownership", () => {
|
|
|
|
|
+ var probe = new OwnershipProbe();
|
|
|
|
|
+ var kept = new OwnershipProbe();
|
|
|
|
|
+ var series = new Series<OwnershipProbe>();
|
|
|
|
|
+ series.add(probe);
|
|
|
|
|
+ series.add(kept);
|
|
|
|
|
+ assert(probe.ref_count == 2);
|
|
|
|
|
+ series.remove_first_where(p => p == probe);
|
|
|
|
|
+ assert(probe.ref_count == 1);
|
|
|
|
|
+ assert(kept.ref_count == 2);
|
|
|
|
|
+ series.remove_all_where(p => true);
|
|
|
|
|
+ assert(kept.ref_count == 1);
|
|
|
|
|
+ assert(series.count() == 0);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ Test.add_func("/invercargill/structure/series/clear_releases_ownership", () => {
|
|
|
|
|
+ var probe = new OwnershipProbe();
|
|
|
|
|
+ var series = new Series<OwnershipProbe>();
|
|
|
|
|
+ series.add(probe);
|
|
|
|
|
+ series.add(probe);
|
|
|
|
|
+ assert(probe.ref_count == 3);
|
|
|
|
|
+ series.clear();
|
|
|
|
|
+ assert(probe.ref_count == 1);
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|