diff --git a/rxjava/pom.xml b/rxjava/pom.xml
index a6c5e9d2fb..d88dfcaa9b 100644
--- a/rxjava/pom.xml
+++ b/rxjava/pom.xml
@@ -31,6 +31,12 @@
1.0.0
+
+ io.reactivex
+ rxjava-string
+ 1.1.1
+
+
junit
junit
diff --git a/rxjava/src/test/java/com/baeldung/rxjava/operators/RxStringOperatorsTest.java b/rxjava/src/test/java/com/baeldung/rxjava/operators/RxStringOperatorsTest.java
new file mode 100644
index 0000000000..5e58b32d8b
--- /dev/null
+++ b/rxjava/src/test/java/com/baeldung/rxjava/operators/RxStringOperatorsTest.java
@@ -0,0 +1,145 @@
+package com.baeldung.rxjava.operators;
+
+import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import rx.Observable;
+import rx.observables.StringObservable;
+import rx.observers.TestSubscriber;
+
+
+public class RxStringOperatorsTest
+{
+
+ @Test
+ public void givenStringObservable_whenFromInputStream_ThenSuccessfull()
+ {
+ //given
+ ByteArrayInputStream is = new ByteArrayInputStream("Lorem ipsum loream, Lorem ipsum lore".getBytes(StandardCharsets.UTF_8));
+ TestSubscriber subscriber = TestSubscriber.create();
+
+ // when
+ StringObservable.decode(StringObservable.from(is), StandardCharsets.UTF_8)
+ .subscribe(subscriber);
+
+ // then
+ subscriber.assertCompleted();
+ subscriber.assertNoErrors();
+ subscriber.assertValueCount(1);
+ subscriber.assertValues("Lorem ipsum loream, Lorem ipsum lore");
+ }
+ @Test
+ public void givenStringObservable_whenEncodingString_ThenSuccessfullObtainingByteStream()
+ {
+ //given
+ Observable sourceObservable = Observable.just("Lorem ipsum loream");
+ TestSubscriber subscriber = TestSubscriber.create();
+
+ // when
+ StringObservable.encode(sourceObservable, StandardCharsets.UTF_8)
+ .subscribe(subscriber);
+
+ // then
+ subscriber.assertCompleted();
+ subscriber.assertNoErrors();
+ subscriber.assertValueCount(1);
+ subscriber.getOnNextEvents()
+ .stream()
+ .forEach(bytes -> Assert.assertTrue(Arrays.equals(bytes, "Lorem ipsum loream".getBytes(StandardCharsets.UTF_8))));
+ }
+
+ @Test
+ public void givenStringObservable_whenConcatenatingStrings_ThenSuccessfullObtainingSingleString()
+ {
+ //given
+ Observable sourceObservable = Observable.just("Lorem ipsum loream","Lorem ipsum lore");
+ TestSubscriber subscriber = TestSubscriber.create();
+
+ // when
+ StringObservable.stringConcat(sourceObservable)
+ .subscribe(subscriber);
+
+ // then
+ subscriber.assertCompleted();
+ subscriber.assertNoErrors();
+ subscriber.assertValueCount(1);
+ subscriber.assertValues("Lorem ipsum loreamLorem ipsum lore");
+ }
+
+
+ @Test
+ public void givenStringObservable_whenDecodingByteArray_ThenSuccessfullObtainingStringStream()
+ {
+ //given
+ Observable sourceObservable = Observable.just("Lorem ipsum loream".getBytes(StandardCharsets.UTF_8));
+ TestSubscriber subscriber = TestSubscriber.create();
+
+ // when
+ StringObservable.decode(sourceObservable, StandardCharsets.UTF_8)
+ .subscribe(subscriber);
+
+ // then
+ subscriber.assertCompleted();
+ subscriber.assertNoErrors();
+ subscriber.assertValueCount(1);
+ subscriber.assertValues("Lorem ipsum loream");
+ }
+
+ @Test
+ public void givenStringObservable_whenStringSplitted_ThenSuccessfullObtainingStringsStream()
+ {
+ //given
+ Observable sourceObservable = Observable.just("Lorem ipsum loream,Lorem ipsum lore");
+ TestSubscriber subscriber = TestSubscriber.create();
+
+ // when
+ StringObservable.split(sourceObservable,",")
+ .subscribe(subscriber);
+
+ // then
+ subscriber.assertCompleted();
+ subscriber.assertNoErrors();
+ subscriber.assertValueCount(2);
+ subscriber.assertValues("Lorem ipsum loream", "Lorem ipsum lore");
+ }
+
+ @Test
+ public void givenStringObservable_whenSplittingByLine_ThenSuccessfullObtainingStringsStream() {
+ //given
+ Observable sourceObservable = Observable.just("Lorem ipsum loream\nLorem ipsum lore");
+ TestSubscriber subscriber = TestSubscriber.create();
+
+ // when
+ StringObservable.byLine(sourceObservable)
+ .subscribe(subscriber);
+
+ // then
+ subscriber.assertCompleted();
+ subscriber.assertNoErrors();
+ subscriber.assertValueCount(2);
+ subscriber.assertValues("Lorem ipsum loream", "Lorem ipsum lore");
+ }
+
+
+ @Test
+ public void givenStringObservable_whenJoiningStrings_ThenSuccessfullObtainingSingleString() {
+ //given
+ Observable sourceObservable = Observable.just("Lorem ipsum loream","Lorem ipsum lore");
+ TestSubscriber subscriber = TestSubscriber.create();
+
+ // when
+ StringObservable.join(sourceObservable,",")
+ .subscribe(subscriber);
+
+ // then
+ subscriber.assertCompleted();
+ subscriber.assertNoErrors();
+ subscriber.assertValueCount(1);
+ subscriber.assertValues("Lorem ipsum loream,Lorem ipsum lore");
+ }
+
+}