1'use strict';
2// Flags: --expose-gc
3
4const common = require('../../common');
5const assert = require('assert');
6const test = require(`./build/${common.buildType}/7_factory_wrap`);
7
8assert.strictEqual(test.finalizeCount, 0);
9async function runGCTests() {
10  (() => {
11    const obj = test.createObject(10);
12    assert.strictEqual(obj.plusOne(), 11);
13    assert.strictEqual(obj.plusOne(), 12);
14    assert.strictEqual(obj.plusOne(), 13);
15  })();
16  await common.gcUntil('test 1', () => (test.finalizeCount === 1));
17
18  (() => {
19    const obj2 = test.createObject(20);
20    assert.strictEqual(obj2.plusOne(), 21);
21    assert.strictEqual(obj2.plusOne(), 22);
22    assert.strictEqual(obj2.plusOne(), 23);
23  })();
24  await common.gcUntil('test 2', () => (test.finalizeCount === 2));
25}
26runGCTests();
27