Пример #1
0
var g_counter = function(maxsize) {
  var natArbitrary = jsc.nat(maxsize)
    , pairArbitrary = jsc.pair(jsc.asciichar, natArbitrary)
    , arrayArbitrary = jsc.array(pairArbitrary)

  return {
    generator: arrayArbitrary.generator.map(fromArray),
    shrink: arrayArbitrary.shrink.isomap(fromArray, toArray),
    show: function (m) {
      var m_payload = m.toJS().e
      return "{" + Object.keys(m_payload).map(function (k) {
        return k + ": " + natArbitrary.show(m_payload[k]);
      }).join(", ") + "}";
    }
  }
}
Пример #2
0
        const skips = idxPairs.map(([i, j]) => [skip2(A, i, j), skip(b, i)]);
        return skips;
      }
    });

    const show = ([A, b]) => `${JSON.stringify(A)} * x = ${JSON.stringify(b)}`;

    return {
      generator: jsc.utils.curried2(generator, arguments),
      shrink: jsc.utils.curried2(shrink, arguments),
      show: jsc.utils.curried2(show, arguments)
    };
  },

  digitStrings() {
    const digits = jsc.nat(9);

    const generator = jsc.generator.bless(size => {
      const n = jsc.random(1, Math.max(1, size));
      const v = new Array(n);
      for (let i = 0; i < n; ++i)
        v[i] = digits.generator();
      return v.join('');
    });

    const shrink = jsc.shrink.bless(s => {
      if (s.length <= 1)
        return [];
      else
        return seq.range(0, s.length).map(i => skip(s, i)).toArray();
    });