RAW enc/dec: FIELDLENGTH unit set to 8 for universal charstrings, plus documentation...
authorBotond Baranyi <botond.baranyi@ericsson.com>
Tue, 5 Apr 2016 13:26:27 +0000 (15:26 +0200)
committerBotond Baranyi <botond.baranyi@ericsson.com>
Tue, 5 Apr 2016 13:26:27 +0000 (15:26 +0200)
Signed-off-by: Botond Baranyi <botond.baranyi@ericsson.com>
compiler2/Type.cc
regression_test/RAW/Annex_E_variants/Annex_E_variants.ttcn
regression_test/RAW/Makefile
regression_test/RAW/ustr/ustr.ttcn
usrguide/referenceguide.doc

index 491556570d303f6868da5891882cfaa0284c66cf..a0182ffd5a3954373f47ad3bd37f5972140d8539 100644 (file)
@@ -3044,6 +3044,7 @@ namespace Common {
       break;
     case T_OSTR:
     case T_CSTR:
+    case T_USTR:
       return 8;
     default:
       return 1;
index c89735da1e7701d6ffd6dfafa35f30d8adb58978..2cf3c69f61a80b8869a0c2052aa48d4e6fdcf814 100644 (file)
@@ -86,6 +86,9 @@ type octetstring OStr32Eq with { variant "FIELDLENGTH(4), BYTEORDER(last)" };
 type charstring CStr64 with { variant "64 bit" }; // 64 bits = 8 characters
 type charstring CStr64Eq with { variant "FIELDLENGTH(8), BYTEORDER(last)" };
 
+type universal charstring UStr80 with { variant "80 bit" }; // 80 bits = 10 UTF-8 characters
+type universal charstring UStr80Eq with { variant "FIELDLENGTH(10), BYTEORDER(last)" };
+
 // Component type
 type component CT {}
 
@@ -490,6 +493,28 @@ testcase tc_cstr64() runs on CT
   setverdict(pass);
 }
 
+testcase tc_ustr80() runs on CT
+{
+  var UStr80 x := "sepr" & char(0, 0, 1, 113);
+  var UStr80Eq x_eq := x;
+  var bitstring enc := encvalue(x);
+  var bitstring enc_exp := encvalue(x_eq);
+  if (enc != enc_exp) {
+    setverdict(fail, "Expected: ", enc_exp, ", got: ", enc);
+  }
+  else {
+    var UStr80 dec;
+    var UStr80Eq dec_exp;
+    if (decvalue(enc, dec) != 0 or decvalue(enc_exp, dec_exp) != 0) {
+      setverdict(fail, "Could not decode ", enc);
+    }
+    else if (dec != dec_exp) {
+      setverdict(fail, "Expected: ", dec_exp, ", got: ", dec);
+    }
+  }
+  setverdict(pass);
+}
+
 // Control part
 control {
   execute(tc_byte());
@@ -511,6 +536,7 @@ control {
   execute(tc_hstr20());
   execute(tc_ostr32());
   execute(tc_cstr64());
+  execute(tc_ustr80());
 }
 
 }
index e9860395d82316e34fdc77f85fed88f2c301a91a..dfa4ef78dc7cda1e96827b5b505fc75529c98d8e 100644 (file)
@@ -17,7 +17,7 @@
 TOPDIR := ..
 include $(TOPDIR)/Makefile.regression
 
-RDIRS = Examples HN25015 HQ26535 HQ49956 HS16977 ustr
+RDIRS = Examples HN25015 HQ26535 HQ49956 HS16977 ustr Annex_E_variants
 
 all dep clean run distclean:
        for dir in $(RDIRS); do (cd $$dir && $(MAKE) $@) || exit; done
index f90a699b2b82477f1eefa1ef2771eb2691dad7af..3eecffb7c4860f75975027b01d840b5adc6fd290 100644 (file)
@@ -18,7 +18,7 @@ type record Rec {
 }
 with {
   variant "";
-  variant (ustr) "FIELDLENGTH(256)"; // 32 UTF-8 characters
+  variant (ustr) "FIELDLENGTH(32)"; // 32 UTF-8 characters
 }
 
 type component CT {}
index fe16d071653517f7eed8aa072d6da7035f764c69..b56d7638e3abceaa276e012bb5ef2690b7fc6c00 100644 (file)
Binary files a/usrguide/referenceguide.doc and b/usrguide/referenceguide.doc differ
This page took 0.039402 seconds and 5 git commands to generate.