<commit_before>'use strict';

var toArray = require('es6-iterator/to-array')
  , Set     = require('observable-set');

module.exports = exports = function (t, a) {
	exports.tests(t(require('observable-set/create-read-only')(
		require('observable-set')
	), require('es6-map')), a);
};

exports.tests = function (MultiSet, a) {
	var s1 = new Set(['raz', 'dwa', 'trzy', 'pięć', 'dziewięć'])
	  , s2 = new Set(['dwa', 'pięć', 'sześć', 'raz'])
	  , s3 = new Set(['raz', 'osiem', 'pięć', 'dziewięć'])
	  , set = new MultiSet([s1, s2])
	  , event;

	set.on('change', function (ev) {
		if (event) a.never();
		event = ev;
	});

	a.deep(toArray(set), ['raz', 'dwa', 'trzy', 'pięć', 'dziewięć', 'sześć'],
		"Content");
	a.h1("Add set");
	set.sets.add(s3);
	a.deep(event, { type: 'add', value: 'osiem' }, "Event");
	a.deep(toArray(set), ['raz', 'dwa', 'trzy', 'pięć', 'dziewięć', 'sześć',
		'osiem'], "Content");
	event = null;

	a.h1("Delete set");
	set.sets.delete(s2);
	a.deep(event, { type: 'delete', value: 'sześć' }, "Event");
	a.deep(toArray(set), ['raz', 'dwa', 'trzy', 'pięć', 'dziewięć', 'osiem'],
		"Content");
	event = null;

	a.h1("Delete set #2");
	set.sets.delete(s1);
	a.deep(event, { type: 'batch', deleted: ['dwa', 'trzy'] }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem'], "Content");
	event = null;

	a.h1("Re-add set");
	set.sets.add(s2);
	a.deep(event, { type: 'batch', added: ['dwa', 'sześć'] }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć'],
		"Content");
	event = null;

	a.h1("Re-add set #2");
	set.sets.add(s1);
	a.deep(event, { type: 'add', value: 'trzy' }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy'], "Content");
	event = null;

	a.h1("Add value");
	s1.add('dziesięć');
	a.deep(event, { type: 'add', value: 'dziesięć' }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Add existing value");
	s2.add('dziesięć');
	a(event, null, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Delete existing value");
	s3.delete('pięć');
	a(event, null, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Delete existing value #2");
	s1.delete('pięć');
	a(event, null, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Final value delete");
	s2.delete('pięć');
	a.deep(event, { type: 'delete', value: 'pięć' }, "Event");
	a.deep(toArray(set), ['raz', 'dziewięć', 'osiem', 'dwa', 'sześć', 'trzy',
		'dziesięć'], "Content");
	event = null;

	a.h1("Lone value delete");
	s3.delete('osiem');
	a.deep(event, { type: 'delete', value: 'osiem' }, "Event");
	a.deep(toArray(set), ['raz', 'dziewięć', 'dwa', 'sześć', 'trzy', 'dziesięć'],
		"Content");
	event = null;
};
<commit_msg>Update tests up to changed batch handling<commit_after>'use strict';

var toArray = require('es6-iterator/to-array')
  , Set     = require('observable-set');

module.exports = exports = function (t, a) {
	exports.tests(t(require('observable-set/create-read-only')(
		require('observable-set')
	), require('es6-map')), a);
};

exports.tests = function (MultiSet, a) {
	var s1 = new Set(['raz', 'dwa', 'trzy', 'pięć', 'dziewięć'])
	  , s2 = new Set(['dwa', 'pięć', 'sześć', 'raz'])
	  , s3 = new Set(['raz', 'osiem', 'pięć', 'dziewięć'])
	  , set = new MultiSet([s1, s2])
	  , event;

	set.on('change', function (ev) {
		if (event) a.never();
		event = ev;
	});

	a.deep(toArray(set), ['raz', 'dwa', 'trzy', 'pięć', 'dziewięć', 'sześć'],
		"Content");
	a.h1("Add set");
	set.sets.add(s3);
	a.deep(event, { type: 'add', value: 'osiem' }, "Event");
	a.deep(toArray(set), ['raz', 'dwa', 'trzy', 'pięć', 'dziewięć', 'sześć',
		'osiem'], "Content");
	event = null;

	a.h1("Delete set");
	set.sets.delete(s2);
	a.deep(event, { type: 'delete', value: 'sześć' }, "Event");
	a.deep(toArray(set), ['raz', 'dwa', 'trzy', 'pięć', 'dziewięć', 'osiem'],
		"Content");
	event = null;

	a.h1("Delete set #2");
	set.sets.delete(s1);
	event.deleted = toArray(event.deleted);
	a.deep(event, { type: 'batch', deleted: ['dwa', 'trzy'] }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem'], "Content");
	event = null;

	a.h1("Re-add set");
	set.sets.add(s2);
	event.added = toArray(event.added);
	a.deep(event, { type: 'batch', added: ['dwa', 'sześć'] }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć'],
		"Content");
	event = null;

	a.h1("Re-add set #2");
	set.sets.add(s1);
	a.deep(event, { type: 'add', value: 'trzy' }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy'], "Content");
	event = null;

	a.h1("Add value");
	s1.add('dziesięć');
	a.deep(event, { type: 'add', value: 'dziesięć' }, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Add existing value");
	s2.add('dziesięć');
	a(event, null, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Delete existing value");
	s3.delete('pięć');
	a(event, null, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Delete existing value #2");
	s1.delete('pięć');
	a(event, null, "Event");
	a.deep(toArray(set), ['raz', 'pięć', 'dziewięć', 'osiem', 'dwa', 'sześć',
		'trzy', 'dziesięć'], "Content");
	event = null;

	a.h1("Final value delete");
	s2.delete('pięć');
	a.deep(event, { type: 'delete', value: 'pięć' }, "Event");
	a.deep(toArray(set), ['raz', 'dziewięć', 'osiem', 'dwa', 'sześć', 'trzy',
		'dziesięć'], "Content");
	event = null;

	a.h1("Lone value delete");
	s3.delete('osiem');
	a.deep(event, { type: 'delete', value: 'osiem' }, "Event");
	a.deep(toArray(set), ['raz', 'dziewięć', 'dwa', 'sześć', 'trzy', 'dziesięć'],
		"Content");
	event = null;
};

{'fraction_non_alphanumeric': 0.27287319422150885, 'fraction_numerical': 0.010272873194221509, 'mean_word_length': 4.939942802669209, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2078539', 'n_tokens_mistral': 2817, 'n_tokens_neox': 2804, 'n_words': 570}