PHP Classes

File: test/js/test-nfa.js

Recommend this page to a friend!
  Packages of Nikos M.   Matchy   test/js/test-nfa.js   Download  
File: test/js/test-nfa.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Matchy
Perform exact or fuzzy searches in text strings
Author: By
Last change: v.4.0.0, in progress

* fix boyermoore
* option to return errors in match
* update tests
Date: 6 months ago
Size: 2,141 bytes
 

Contents

Class file image Download
"use strict"; const Matchy = require('../../src/js/Matchy.js'); const echo = console.log; function NFA(input, type = 'l') { return new Matchy.NFA(input, type); } function create_string(alphabet, n) { let s = ''; for (let i=0; i<n; ++i) { s += alphabet[Math.round(Math.random()*(alphabet.length-1))]; } return s; } function test_case(nfa, pattern, string, offset) { const found = nfa.match(string, offset || 0, false, true); echo('nfa("'+pattern+'", "'+string+'", '+(offset||0)+') = '+found['match']+', errors '+found['errors']); } function test() { const tests = [ {pattern:'(a|b)*', nfa:NFA(NFA([NFA('a'), NFA('b')], '|'), '*')}, {pattern:'^(a|b)*$', nfa:NFA([NFA('', '^'), NFA(NFA([NFA('a'), NFA('b')], '|'), '*'), NFA('', '$')], ',')}, {pattern:'aa(b+)', nfa:NFA([NFA('aa'), NFA(NFA('b'), '+')], ',')}, {pattern:'(a+)(b+)', nfa:NFA([NFA(NFA('a'), '+'), NFA(NFA('b'), '+')], ',')}, {pattern:'bababa', nfa:NFA('bababa', {errors:1})}, {pattern:'bababa', nfa:NFA('bababa', {errors:1,transpositions:true})} ]; for (let i=0; i<10; ++i) { let string = create_string(['a', 'b'], 10); echo(); tests.forEach(test => test_case(test.nfa, test.pattern, string)); } echo(); // some special test cases let test; test_case(NFA('ab'), 'ab', "ab"); test = tests[2]; test_case(test.nfa, test.pattern, "ababbbbaab"); test_case(test.nfa, test.pattern, "aaababbbba"); test = tests[3]; test_case(test.nfa, test.pattern, "aaaaaaabbbbb"); test = tests[4]; test_case(test.nfa, test.pattern, "baabba"); test = tests[5]; test_case(test.nfa, test.pattern, "baabba"); test = tests[4]; test_case(test.nfa, test.pattern, "baaabbaaba"); test = tests[5]; test_case(test.nfa, test.pattern, "baaabbaaba"); test = tests[4]; test_case(test.nfa, test.pattern, "babab"); test = tests[5]; test_case(test.nfa, test.pattern, "babab"); test = tests[4]; test_case(test.nfa, test.pattern, "ababa"); test = tests[5]; test_case(test.nfa, test.pattern, "ababa"); } test();