text: /* Copyright (c) 2012-2018 LevelUP contributors
   * See list at <https://github.com/level/levelup#contributing>
   * MIT License <https://github.com/level/levelup/blob/master/LICENSE.md>
   */
  
  var levelup = require('../lib/levelup.js')
  var assert = require('referee').assert
  var refute = require('referee').refute
  var buster = require('bustermove')
  var memdown = require('memdown')
  var encDown = require('encoding-down')
  
  require('./common')
  
  buster.testCase('LevelDOWN Substitution', {
    'test substitution of LevelDOWN with MemDOWN': function (done) {
      var md = memdown('foo')
      var db = levelup(encDown(md))
      var entries = []
      var expected = [
        { key: 'a', value: 'A' },
        { key: 'b', value: 'B' },
        { key: 'c', value: 'C' },
        { key: 'd', value: 'D' },
        { key: 'e', value: 'E' },
        { key: 'f', value: 'F' },
        { key: 'i', value: 'I' }
      ]
  
      db.put('f', 'F')
      db.put('h', 'H')
      db.put('i', 'I')
      db.put('a', 'A')
      db.put('c', 'C')
      db.put('e', 'E')
      db.del('g')
      db.batch([
        { type: 'put', key: 'd', value: 'D' },
        { type: 'del', key: 'h' },
        { type: 'put', key: 'b', value: 'B' }
      ])
  
      db.createReadStream()
        .on('data', function (data) { entries.push(data) })
        .on('error', function (err) { refute(err, 'readStream emitted an error') })
        .on('close', function () {
          assert.equals(entries, expected, 'correct entries')
          assert.equals(
            md._store['$foo'].keys,
            expected.map(function (e) { return e.key }),
            'memdown has the entries'
          )
          done()
        })
    }
  })
  