Commit 02a4c371 authored by Matthias Simon's avatar Matthias Simon
Browse files

Add tests for embedded fields

parent aba56e87
Loading
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
 // @author   TTF23
 // @purpose  1:6.2.1.4, Ensure the unqualified type name acts as the field name.
 // @verdict  pass reject
module NegSem_06020104_embedding_fields_001 {

type record of integer RoI;
type union U {
	record of integer RoI;
}

// Reject nested or anonymous types.
type record R {
	Roi[-]
	U.Roi
}

}
+23 −0
Original line number Diff line number Diff line
 // @author   TTF23
 // @purpose  1:6.2.1.4, Ensure embedded fields cannot be used as field names for assignment notations.
 // @verdict  pass reject
module NegSem_06020104_embedding_fields_002 {

type component GeneralComp {}

type record A {
	B
}

type record B {
	integer b
}

const A OK := { B := { b := 1 } }
const A notOK := { b := 1 }

control {
    execute(TC_NegSem_06020104_embedding_fields_002());
}

}
+28 −0
Original line number Diff line number Diff line
 // @author   TTF23
 // @purpose  1:6.2.1.4, Ensure the unqualified type name acts as the field name.
 // @verdict  pass accept
module Sem_06020104_embedding_fields_001 {

type component GeneralComp {}

type record R {
	integer,
	R optional,
	Sem_06020104_embedding_fields_001.GeneralComp
}


testcase TC_Sem_06020104_embedding_fields_001() runs on GeneralComp {
	var R r := {
		integer     := 23,
		R           := {}
	}
	r.GeneralComp := GeneralComp.create
	setverdict(pass)
}

control {
    execute(TC_Sem_06020104_embedding_fields_001());
}

}
+33 −0
Original line number Diff line number Diff line
 // @author   TTF23
 // @purpose  1:6.2.1.4, Ensure embedded field is promoted when its name is unique.
 // @verdict  pass accept, ttcn3verdict:pass
module Sem_06020104_embedding_fields_002 {

type component GeneralComp {}

type record A {
	B
}

type record B {
	integer b;
}

testcase TC_Sem_06020104_embedding_fields_002() runs on GeneralComp {
	var A a;

	a.b := 1;
	a.B.b := 2;

	if (a.b == a.B.b) {
		setverdict(pass);
	} else {
		setverdict(fail);
	}
}

control {
    execute(TC_Sem_06020104_embedding_fields_002());
}

}
+37 −0
Original line number Diff line number Diff line
 // @author   TTF23
 // @purpose  1:6.2.1.4, Ensure embedded field is promoted when its name is unique.
 // @verdict  pass accept, ttcn3verdict:pass
module Sem_06020104_embedding_fields_003 {

type component GeneralComp {}

type record A {
	B
}

type record B {
	C
}

type record C {
	integer c
}

testcase TC_Sem_06020104_embedding_fields_003() runs on GeneralComp {
	var A a;

	a.c := 1;
	a.B.C.c := 2;

	if (a.c == a.B.C.c) {
		setverdict(pass);
	} else {
		setverdict(fail, "field c not promoted");
	}
}

control {
    execute(TC_Sem_06020104_embedding_fields_003());
}

}
Loading