    @Test
    public void testGetSupportedLanguages_emitsCorrectLanguages() {

        Language de = new Language("German", LanguageCode.DE);
        Language en = new Language("English", LanguageCode.EN);
        List<Language> languages = Arrays.asList(de, en);

        Observable<List<Language>> mockObservable = Observable.just(languages);
        //Observable<Language> mockObservable = Observable.from(languages);

        doReturn(mockObservable).when(mDataModel).getObservableSupportedLanguages();

        Language hr = new Language("Slovakian", LanguageCode.HR);
        List<Language> expectedLanguages = Arrays.asList(de, en, hr);

        //mMainViewModel = new MainViewModel(mDataModel, new ImmediateSchedulerProvider());
        TestSubscriber<List<Language>> testSubscriber = new TestSubscriber<>();

        mMainViewModel.getObservableSupportedLanguages().subscribe(testSubscriber);

        testSubscriber.assertNoErrors();
        testSubscriber.assertUnsubscribed();
        testSubscriber.assertTerminalEvent();
        String threadname = testSubscriber.getLastSeenThread().getName();
        System.out.println("threadname " + threadname);

        //testSubscriber.getOnNextEvents( give List<T>
        List<List<Language>> listlistresult = testSubscriber.getOnNextEvents();
        System.out.println("listlistresult " + listlistresult.get(0).toString());

        List<Language> listresult = listlistresult.get(0);
        System.out.println("listresult0 " + listresult.get(0).getName());
        System.out.println("listresult1 " + listresult.get(1).getName());

        //testSubscriber.assertReceivedOnNext(expectedLanguages); do not works result of assertReceivedOnNext is List<List<Language>>

        assertEquals(expectedLanguages.get(0).getName(), listresult.get(0).getName());

        //hamcrest matchers
        //http://www.vogella.com/tutorials/Hamcrest/article.html
        assertThat(languages, hasSize(2));
    }