const test = require('tap').test; const Data = require('../../src/blocks/scratch3_data'); const blocks = new Data(); const lists = {}; const util = { target: { lookupOrCreateList (id, name) { if (!(name in lists)) { lists[name] = {value: []}; } return lists[name]; } } }; test('getItemNumOfList returns the index of an item (basic)', t => { lists.list = {value: ['apple', 'taco', 'burrito', 'extravaganza']}; const args = {ITEM: 'burrito', LIST: {name: 'list'}}; const index = blocks.getItemNumOfList(args, util); t.strictEqual(index, 3); t.end(); }); test('getItemNumOfList returns 0 when an item is not found', t => { lists.list = {value: ['aaaaapple', 'burrito']}; const args = {ITEM: 'jump', LIST: {name: 'list'}}; const index = blocks.getItemNumOfList(args, util); t.strictEqual(index, 0); t.end(); }); test('getItemNumOfList uses Scratch comparison', t => { lists.list = {value: ['jump', 'Jump', '123', 123, 800]}; const args = {LIST: {name: 'list'}}; // Be case-insensitive: args.ITEM = 'Jump'; t.strictEqual(blocks.getItemNumOfList(args, util), 1); // Be type-insensitive: args.ITEM = 123; t.strictEqual(blocks.getItemNumOfList(args, util), 3); args.ITEM = '800'; t.strictEqual(blocks.getItemNumOfList(args, util), 5); t.end(); });