import XCTest @testable import RouterOSAssistant final class VlanEntryTests: XCTestCase { func testBuildCommandsCreatesVlanInterfaceThenDhcpStack() { let vlan = VlanEntry(name: "Gäste", vlanID: 20, parentInterface: "bridge") let commands = vlan.buildCommands() XCTAssertEqual(commands.count, 8) XCTAssertEqual(commands[0].menuPath, "/interface vlan") XCTAssertEqual(commands[0].arguments["vlan-id"], "20") XCTAssertEqual(commands[0].arguments["interface"], "bridge") XCTAssertEqual(commands[0].arguments["name"], "vlan20") XCTAssertEqual(commands[1].menuPath, "/interface bridge port") XCTAssertEqual(commands[2].menuPath, "/ip address") XCTAssertEqual(commands[2].arguments["interface"], "vlan20") XCTAssertEqual(commands[3].menuPath, "/ip pool") XCTAssertEqual(commands[4].menuPath, "/ip dhcp-server") XCTAssertEqual(commands[5].menuPath, "/ip dhcp-server network") XCTAssertEqual(commands[6].menuPath, "/interface list") XCTAssertEqual(commands[7].menuPath, "/interface list member") XCTAssertEqual(commands[7].arguments["interface"], "vlan20") } /// Address fields start empty by design (Nutzerwunsch, 2026-09-16: "die auszufüllenden /// Felder leer lassen, nur Beispiele zeigen ... so sieht man das Schema dahinter") — a /// previous version auto-derived these from the VLAN ID; replaced with this test. func testDefaultAddressesStartEmptyForExamplePlaceholder() { let vlan = VlanEntry(vlanID: 30, parentInterface: "bridge") XCTAssertEqual(vlan.routerAddress, "") XCTAssertEqual(vlan.networkAddress, "") XCTAssertEqual(vlan.poolRangeStart, "") XCTAssertEqual(vlan.poolRangeEnd, "") XCTAssertEqual(vlan.dnsServers, "") } }