Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • T titan.EclipsePlug-ins
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 102
    • Issues 102
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Eclipse ProjectsEclipse Projects
  • Eclipse Titan
  • titan.EclipsePlug-ins
  • Issues
  • #428
Closed
Open
Issue created Jul 14, 2021 by Gábor Szalai@gszalaiMaintainer

RAW enc/dec error, hexstring, FILEDORDER(msb), HEXORDER(high), field starts on half octet

Copy of titan.core#557 (closed)

Summary

The encoding of the hexstring is faulty if:

  • FILEDORDER(msb)
  • HEXORDER(high)
  • The field starts on the half octet

Steps and/or TTCN-3 code to reproduce

module proba {
 
type record R4{
  bitstring f1 length(4),
  hexstring f2
} with {
  variant (f2) "HEXORDER(high)"
  variant  "FIELDORDER(msb)"
}

type component CT{}

template bitstring t_expected_encoded:=oct2bit('F123456789'O)
template R4 t_expected_decoded:={'1111'B, '123456789'H }

testcase TC2() runs on CT {
  var R4 vl_pdu4:={'1111'B, '123456789'H }
  var bitstring vl_encoded:=encvalue(vl_pdu4)
  
  log(vl_pdu4, " encoded as ",bit2oct(vl_encoded), " expected as ", bit2oct(valueof(t_expected_encoded)))
  if(match(vl_encoded,t_expected_encoded)){
    setverdict(pass)
  } else {
    setverdict(fail, "wrong encoded value")
  }
  
  vl_encoded:=valueof(t_expected_encoded)
  var integer vl_res:=decvalue(vl_encoded,vl_pdu4)
  
  log("decode result: ", vl_res)
  
  if(vl_res == 0) {
    setverdict(pass)
    log(bit2oct(valueof(t_expected_encoded)), " decoded as ",vl_pdu4, " expected as ", t_expected_decoded)
    if(match(vl_pdu4,t_expected_decoded)){
      setverdict(pass)
    } else {
      setverdict(fail, "wrong decoded value")
    }
  } else {
    setverdict(fail, "Decoding failed")
  }
  
  
  
}
control {
  execute(TC2())
}
  
} with {encode "RAW"}

What is the current bug behavior?

15:05:12.936648 proba.ttcn:69 Component type proba.CT was initialized.
15:05:12.937090 proba.ttcn:73 { f1 := '1111'B, f2 := '123456789'H }encoded as 'F315274968'O expected as 'F123456789'O
15:05:12.937457 proba.ttcn:77 setverdict(fail): none -> fail reason: "wrong encoded value", new component reason: "wrong encoded value"
15:05:12.937788 proba.ttcn:83 decode result: 0
15:05:12.938259 proba.ttcn:87 'F123456789'Odecoded as { f1 := '1111'B, f2 := '241638597'H } expected as { f1 := '1111'B, f2 := '123456789'H }
15:05:12.938626 proba.ttcn:91 setverdict(fail): fail -> fail reason: "wrong decoded value", component reason not changed

What is the expected correct behavior?

15:08:15.666778 proba.ttcn:73 { f1 := '1111'B, f2 := '123456789'H } encoded as 'F123456789'O expected as 'F123456789'O
15:08:15.667254 proba.ttcn:75 setverdict(pass): none -> pass
15:08:15.667984 proba.ttcn:83 decode result: 0
15:08:15.668373 proba.ttcn:86 setverdict(pass): pass -> pass, component reason not changed
15:08:15.668687 proba.ttcn:87 'F123456789'O decoded as { f1 := '1111'B, f2 := '123456789'H } expected as { f1 := '1111'B, f2 := '123456789'H }
15:08:15.669039 proba.ttcn:89 setverdict(pass): pass -> pass, component reason not changed

Titan version

Up to 8.0.0

Assignee
Assign to
Time tracking

Copyright © Eclipse Foundation, Inc. All Rights Reserved.     Privacy Policy | Terms of Use | Copyright Agent