```ruby
# encoding: utf-8
require 'test_helper'

class BasicMultilingualPlaneValidatorTest < Minitest::Test

  class Model
    include ActiveModel::Validations

    attr_accessor :unicode
    validates :unicode, basic_multilingual_plane: true
  end

  def setup
    @model = Model.new
  end

  def test_basic_multilingual_plane_string
    @model.unicode = 'basic multilingual ünicode'
    assert @model.valid?

  end

  def test_emoji
    @model.unicode = '💩'
    assert @model.invalid?
    assert_equal ["contains characters outside Unicode's basic multilingual plane"], @model.errors[:unicode]
  end

  def test_nil
    @model.unicode = nil
    assert @model.valid?
  end

  def test_different_type
    @model.unicode = 1
    assert @model.valid?
  end

  def test_non_unicode_encoding
    @model.unicode = 'ü'.encode('ISO-8859-15')
    assert @model.valid?
  end
end
```

Add more utf8mb4 vs utfmb3 tests
user
```ruby
# encoding: utf-8
require 'test_helper'

class BasicMultilingualPlaneValidatorTest < Minitest::Test

  class Model
    include ActiveModel::Validations

    attr_accessor :unicode
    validates :unicode, basic_multilingual_plane: true
  end

  def setup
    @model = Model.new
  end

  def test_basic_multilingual_plane_string
    @model.unicode = 'basic multilingual ünicode'
    assert @model.valid?

  end

  def test_emoji
    @model.unicode = '💩'
    assert @model.invalid?
    assert_equal ["contains characters outside Unicode's basic multilingual plane"], @model.errors[:unicode]
  end

  def test_nil
    @model.unicode = nil
    assert @model.valid?
  end

  def test_different_type
    @model.unicode = 1
    assert @model.valid?
  end

  def test_non_unicode_encoding
    @model.unicode = 'ü'.encode('ISO-8859-15')
    assert @model.valid?
  end

  def test_utf8mb3_japanese
    @model.unicode = 'これは普通なストリングです'
    assert @model.valid?
  end

  def test_utf8mb4_kanji
    @model.unicode = '𠜎𠜱𠝹𠱓𠱸𠲖𠳏𠳕𠴕𠵼𠵿𠸎𠸏𠹷'
    assert @model.invalid?
    assert_equal ["contains characters outside Unicode's basic multilingual plane"], @model.errors[:unicode]
  end
end
```
assistant