test: add unit tests for JSONSource

This patch introduces unit tests for JSONSource or Mupd8Source in general.

The general requirement for a source reader:
- hasNext() should return true when there's next item in the source
- hasNext() should not consume items from the source
- hasNext() should return false when there's no item in the source
- getNextDataPair() should return the next item in the source
- getNextDataPair() should throw NoSuchElementException if no next item

Some behavioral changes