diff --git a/src/main/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoder.java b/src/main/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoder.java
index 2f9ca5e..936c24b 100644
--- a/src/main/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoder.java
+++ b/src/main/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoder.java
@@ -16,14 +16,15 @@ public class RussianSuffixDecoderEncoder {
 
 
     static public Long encode(String string) {
-        if (string.length() > 12) throw new RuntimeException("suffix to long");
+        if (string.length() > 12) throw new SuffixToLongException("Suffix length should not be greater then " + 12);
         long result = 0L;
         for (int i = 0; i < string.length(); i++) {
             int c = 0 + string.charAt(i) - RUSSIAN_SMALL_LETTER_OFFSET;
-            if (c < 0) {
+            if (c == 45 - RUSSIAN_SMALL_LETTER_OFFSET) {
                 c = DASH_CODE;
             }
             if (c == EE_CHAR) c = E_CHAR;
+            if (c < 0 || c > 33) throw new WrongCharaterException(); 
             result = result * 35L + c;
         }
         return result;
diff --git a/src/main/java/org/apache/lucene/russian/morphology/SuffixToLongException.java b/src/main/java/org/apache/lucene/russian/morphology/SuffixToLongException.java
new file mode 100644
index 0000000..eaaebfe
--- /dev/null
+++ b/src/main/java/org/apache/lucene/russian/morphology/SuffixToLongException.java
@@ -0,0 +1,12 @@
+package org.apache.lucene.russian.morphology;
+
+
+public class SuffixToLongException extends RuntimeException {
+
+    public SuffixToLongException() {
+    }
+
+    public SuffixToLongException(String message) {
+        super(message);
+    }
+}
diff --git a/src/main/java/org/apache/lucene/russian/morphology/WrongCharaterException.java b/src/main/java/org/apache/lucene/russian/morphology/WrongCharaterException.java
new file mode 100644
index 0000000..830fb4b
--- /dev/null
+++ b/src/main/java/org/apache/lucene/russian/morphology/WrongCharaterException.java
@@ -0,0 +1,11 @@
+package org.apache.lucene.russian.morphology;
+
+
+public class WrongCharaterException extends RuntimeException{
+    public WrongCharaterException() {
+    }
+
+    public WrongCharaterException(String message) {
+        super(message);
+    }
+}
diff --git a/src/test/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoderTest.java b/src/test/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoderTest.java
index c343d34..d6be88f 100644
--- a/src/test/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoderTest.java
+++ b/src/test/java/org/apache/lucene/russian/morphology/RussianSuffixDecoderEncoderTest.java
@@ -1,5 +1,39 @@
 package org.apache.lucene.russian.morphology;
 
+import org.junit.Test;
+import static org.junit.Assert.assertThat;
+import static org.hamcrest.core.IsEqual.equalTo;
+import org.apache.lucene.russian.morphology.SuffixToLongException;
+
+import java.io.InputStream;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+
 
 public class RussianSuffixDecoderEncoderTest {
+
+    @Test
+    public void testShouldCorretDecodeEncode() throws IOException {
+       InputStream stream = this.getClass().getResourceAsStream("/decoder-test-data.txt");
+       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));
+       String s = bufferedReader.readLine();
+        while(s != null){
+            String[] qa = s.trim().split(" ");
+            Long ecodedSuffix = RussianSuffixDecoderEncoder.encode(qa[0]);
+            assertThat(RussianSuffixDecoderEncoder.decode(ecodedSuffix),equalTo(qa[1]));
+            s = bufferedReader.readLine();
+        }
+    }
+
+    @Test(expected = SuffixToLongException.class)
+    public void shouldThrownExeptionIfSuffixToLong(){
+         RussianSuffixDecoderEncoder.encode("1234567890123");
+    }
+
+    @Test(expected = WrongCharaterException.class)
+    public void shouldThrownExeptionIfSuffixContainWrongCharater(){
+         RussianSuffixDecoderEncoder.encode("1");
+    }    
+    
 }
diff --git a/src/test/resources/decoder-test-data.txt b/src/test/resources/decoder-test-data.txt
new file mode 100644
index 0000000..53157c3
--- /dev/null
+++ b/src/test/resources/decoder-test-data.txt
@@ -0,0 +1,4 @@
+���� ����
+�� ��
+������� �������
+���-�� ���-��
\ No newline at end of file