private static final Pattern LEAF_INTEGER_VALUE_PATTERN = Pattern.compile("[-+]?\\d+");
 
-    private static final Pattern LEAF_STRING_VALUE_PATTERN = Pattern.compile("['\"](.*)['\"]");
+    private static final Pattern LEAF_STRING_VALUE_IN_SINGLE_QUOTES_PATTERN = Pattern.compile("'(.*)'");
+    private static final Pattern LEAF_STRING_VALUE_IN_DOUBLE_QUOTES_PATTERN = Pattern.compile("\"(.*)\"");
 
     private static final String YANG_MULTIPLE_LEAF_VALUE_EQUALS_CONDITION =  "\\[(.*?)\\s{0,9}]";
 
     }
 
     private static Object convertLeafValueToCorrectType(final String leafValueString, final String cpsPath) {
-        final Matcher stringValueWithQuotesMatcher = LEAF_STRING_VALUE_PATTERN.matcher(leafValueString);
-        if (stringValueWithQuotesMatcher.matches()) {
-            return stringValueWithQuotesMatcher.group(1);
+        final Matcher stringValueWithSingleQuotesMatcher =
+                LEAF_STRING_VALUE_IN_SINGLE_QUOTES_PATTERN.matcher(leafValueString);
+        if (stringValueWithSingleQuotesMatcher.matches()) {
+            return stringValueWithSingleQuotesMatcher.group(1);
+        }
+        final Matcher stringValueWithDoubleQuotesMatcher =
+                LEAF_STRING_VALUE_IN_DOUBLE_QUOTES_PATTERN.matcher(leafValueString);
+        if (stringValueWithDoubleQuotesMatcher.matches()) {
+            return stringValueWithDoubleQuotesMatcher.group(1);
         }
         final Matcher integerValueMatcher = LEAF_INTEGER_VALUE_PATTERN.matcher(leafValueString);
         if (integerValueMatcher.matches()) {
 
             scenario                                                            | cpsPath
             'no / at the start'                                                 | 'invalid-cps-path/child'
             'additional / after descendant option'                              | '///cps-path'
-            'float value'                                                       | '/parent-200/child-202[@common-leaf-name-float=5.0]'
+            'float value'                                                       | '/parent/child[@someFloat=5.0]'
+            'unmatched quotes, double quote first '                             | '/parent/child[@someString="value with unmatched quotes\']'
+            'unmatched quotes, single quote first'                              | '/parent/child[@someString=\'value with unmatched quotes"]'
             'too many containers'                                               | '/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50/51/52/53/54/55/56/57/58/59/60/61/62/63/64/65/66/67/68/69/70/71/72/73/74/75/76/77/78/79/80/81/82/83/84/85/86/87/88/89/90/91/92/93/94/95/96/97/98/99/100[@a=1]'
             'end with descendant and more than one attribute separated by "or"' | '//child[@int-leaf=5 or @leaf-name="leaf value"]'
             'missing attribute value'                                           | '//child[@int-leaf=5 and @name]'
     }
-}
+
+    @Unroll
+    def 'Convert cps leaf value to valid type with leaf of type #scenario.'() {
+        when: 'the given leaf value is converted'
+            def result = objectUnderTest.convertLeafValueToCorrectType(leafValueInputString, 'source xPath (for error message only)')
+        then: 'the leaf value returned is of the right type'
+            result == expectedLeafOutputValue
+        where: "the following data is used"
+            scenario                         | leafValueInputString         ||  expectedLeafOutputValue
+            'Integer'                        | "5"                          ||  5
+            'String with single quotes'      | '\'value in single quotes\'' || 'value in single quotes'
+            'String with double quotes'      | '"value in double quotes"'   || 'value in double quotes'
+            'String containing single quote' | '"value with \'"'            || 'value with \''
+            'String containing double quote' | '\'value with "\''           || 'value with "'
+    }
+    
+}
\ No newline at end of file