class_docstr: Base class for testing FXRateReader implementations.
  
  To test a new FXRateReader implementation, subclass from this base class
  and implement the ``reader`` property, returning an FXRateReader that uses
  the data stored in ``cls.fx_rates``.
code: def test_read_unknown_base(self):
      for rate in self.FX_RATES_RATE_NAMES:
          quote = "USD"
          for unknown_base in "XXX", None:
              bases = np.array([unknown_base], dtype=object)
              dts = pd.DatetimeIndex([self.FX_RATES_START_DATE])
              result = self.reader.get_rates(rate, quote, bases, dts)[
                  0, 0
              ]
              assert_equal(result, np.nan)
  
imports: import itertools
  import pandas
  import numpy
  from zipline.data.fx import DEFAULT_FX_RATE
  from zipline.testing.predicates import assert_equal
  import zipline.testing.fixtures
label_desc: Use image node_id 9 for calling the _FXReaderTestCase obj's underlying member method code with example usage: obj.test_read_unknown_base() without return types