feat(fls): write the topology of a .fls, loaded by Java as the original
topologyWriter.ts writes konfiguration.xml from Java's view of a project: the version line, the node items (label position, device with name, host label flags, interfaces or ports), the cable items and the documentation items. What a device's constructor makes is changed through getters, as XMLEncoder does, and more is added; fewer than it makes set the list anew. Cable ends name the port objects the getters return (the writer now names a getter's result, <void id="Port0" property="port"/>), and each cable carries the nodes the editor draws it between. Checked by Java against Java: every corpus file, read and written again, loads in Java FILIUS (the oracle's loading method, --sha256 ties its result to the written bytes) to the same devices, names, positions, interfaces, cables and documentation as the original; so does a synthetic topology with what the corpus never sets. The oracle and the reader now also report a cable's drawing ends (JCablePanel ziel1/ziel2): in the corpus the nodes it joins, for all 183 cables. Mutation probes rewrite the files and let Java load each mutant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ import {
|
||||
int,
|
||||
long,
|
||||
object,
|
||||
reference,
|
||||
type BeanObject,
|
||||
type BeanValue,
|
||||
} from '../src/javaBeansWriter.js';
|
||||
@@ -42,7 +43,23 @@ const file = object('filius.software.system.Datei', [
|
||||
{ set: 'dateiInhalt', value: 'a.de. A 3600 1.2.3.4\n' },
|
||||
]);
|
||||
|
||||
const port = reference('Port');
|
||||
|
||||
const CASES: Record<string, { values: BeanValue[]; expected: unknown[] }> = {
|
||||
references: {
|
||||
values: [
|
||||
object('java.util.LinkedList', [
|
||||
{ call: 'add', args: [object('filius.hardware.NetzwerkInterface', [{ set: 'ip', value: '10.0.0.1' }, { get: 'port', statements: [], as: port }])] },
|
||||
{ call: 'add', args: [port] },
|
||||
]),
|
||||
],
|
||||
expected: [
|
||||
items('java.util.LinkedList', [
|
||||
bean('filius.hardware.NetzwerkInterface', { ip: text('10.0.0.1'), port: { id: 2, class: 'filius.hardware.Port' } }),
|
||||
{ ref: 2 },
|
||||
]),
|
||||
],
|
||||
},
|
||||
strings: {
|
||||
values: [list('java.util.LinkedList', STRINGS)],
|
||||
expected: [items('java.util.LinkedList', STRINGS.map(text))],
|
||||
|
||||
Reference in New Issue
Block a user