HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/design.system/node_modules/map-or-similar/tests/set.js
var Similar = require('../src/similar');

describe("simple keys", () => {
	var similar = new Similar(),
		entry = { key: 'stringkey', val: 'stringval' };

	similar.set(entry.key, entry.val);

	it("has proper length", () => { expect(similar.list.length).toEqual(1); });
	it("has proper size", () => { expect(similar.size).toEqual(1); });
	it("has proper key", () => { expect(similar.list[0].key).toEqual(entry.key); });
	it("has proper val", () => { expect(similar.list[0].val).toEqual(entry.val); });
	it("has proper lastItem", () => { expect(similar.lastItem.key).toEqual(entry.key); expect(similar.lastItem.val).toEqual(entry.val); });
	it("resolves has() correctly", () => { expect(similar.has(entry.key)).toEqual(true); expect(similar.has(entry.val)).toEqual(false); });
	it("resolves get() correctly", () => { expect(similar.get(entry.key)).toEqual(entry.val); });

});

describe("NaN keys", () => {
	var similar = new Similar(),
		key = NaN,
		val1 = 'val1',
		val2 = 'val2';

	similar.set(key, val1);
	similar.set(key, val2);
	similar.set(key, val1);
	similar.set(key, val2);

	it("has proper length", () => { expect(similar.list.length).toEqual(1); });
	it("has proper size", () => { expect(similar.size).toEqual(1); });
	it("has proper key", () => { expect(similar.list[0].key).toEqual(key); });
	it("has proper val", () => { expect(similar.list[0].val).toEqual(val2); });
	it("has proper lastItem", () => { expect(similar.lastItem.key).toEqual(key); expect(similar.lastItem.val).toEqual(val2); });
	it("resolves has() correctly", () => { expect(similar.has(key)).toEqual(true); expect(similar.has(val2)).toEqual(false); });
	it("resolves get() correctly", () => { expect(similar.get(key)).toEqual(val2); });

	if (!!Map) {
		var map = new Map();

		map.set(key, val1);
		map.set(key, val2);
		map.set(key, val1);
		map.set(key, val2);

		it("matches Map get()", () => { expect(similar.get(key)).toEqual(map.get(key)); });
		it("matches Map has()", () => { expect(similar.has(key)).toEqual(map.has(key)); });
	}
});

describe("complex keys", () => {
	var similar = new Similar(),
		entry = { key: { prop: ['a', 'b'] }, val: { prop: 'val1' } };

	similar.set(entry.key, entry.val);

	it("has proper length", () => { expect(similar.list.length).toEqual(1); });
	it("has proper size", () => { expect(similar.size).toEqual(1); });
	it("has proper key", () => { expect(similar.list[0].key).toEqual(entry.key); });
	it("has proper val", () => { expect(similar.list[0].val).toEqual(entry.val); });
	it("has proper lastItem", () => { expect(similar.lastItem.key).toEqual(entry.key); expect(similar.lastItem.val).toEqual(entry.val); });
	it("resolves has() correctly", () => { expect(similar.has(entry.key)).toEqual(true); expect(similar.has(entry.val)).toEqual(false); });
	it("resolves get() correctly", () => { expect(similar.get(entry.key)).toEqual(entry.val); });

	if (!!Map) {
		var map = new Map();
		map.set(entry.key, entry.val);
		it("matches Map get()", () => { expect(similar.get(entry.key)).toEqual(map.get(entry.key)); });
		it("matches Map has()", () => { expect(similar.has(entry.key)).toEqual(map.has(entry.key)); });
	}
});

describe("undefined keys and values", () => {
	var similar = new Similar(),
		entry = { key: undefined, val: undefined };

	similar.set(entry.key, entry.val);

	it("has proper length", () => { expect(similar.list.length).toEqual(1); });
	it("has proper size", () => { expect(similar.size).toEqual(1); });
	it("has proper key", () => { expect(similar.list[0].key).toEqual(entry.key); });
	it("has proper val", () => { expect(similar.list[0].val).toEqual(entry.val); });
	it("has proper lastItem", () => { expect(similar.lastItem.key).toEqual(entry.key); expect(similar.lastItem.val).toEqual(entry.val); });
	it("resolves has() correctly", () => { expect(similar.has(entry.key)).toEqual(true); expect(similar.has(null)).toEqual(false); });
	it("resolves get() correctly", () => { expect(similar.get(entry.key)).toEqual(entry.val); });

	if (!!Map) {
		var map = new Map();
		map.set(entry.key, entry.val);
		it("matches Map get()", () => { expect(similar.get(entry.key)).toEqual(map.get(entry.key)); });
		it("matches Map has()", () => { expect(similar.has(entry.key)).toEqual(map.has(entry.key)); });
	}
});

describe("same keys (replace)", () => {
	var similar = new Similar(),
		key = { key: { prop: ['a', 'b'] }},
		val1 = 'val1',
		val2 = 'val2';

	similar.set(key, val1);
	similar.set(key, val2);
	similar.set(key, val1);
	similar.set(key, val2);

	it("has proper length", () => { expect(similar.list.length).toEqual(1); });
	it("has proper size", () => { expect(similar.size).toEqual(1); });
	it("has proper key", () => { expect(similar.list[0].key).toEqual(key); });
	it("has proper val", () => { expect(similar.list[0].val).toEqual(val2); });
	it("has proper lastItem", () => { expect(similar.lastItem.key).toEqual(key); expect(similar.lastItem.val).toEqual(val2); });
	it("resolves has() correctly", () => { expect(similar.has(key)).toEqual(true); expect(similar.has(val2)).toEqual(false); });
	it("resolves get() correctly", () => { expect(similar.get(key)).toEqual(val2); });

	if (!!Map) {
		var map = new Map();

		map.set(key, val1);
		map.set(key, val2);
		map.set(key, val1);
		map.set(key, val2);

		it("matches Map get()", () => { expect(similar.get(key)).toEqual(map.get(key)); });
		it("matches Map has()", () => { expect(similar.has(key)).toEqual(map.has(key)); });
	}
});