i would use MCU (any) and have three outputs (one for each wire) that are turned on one at a time (001, 010, 100, and then repeat continuously)
this would connect to one end of the cable. the other end would connect to same device but to three inputs (read all three inputs at the same time).
all inputs and outputs would have LED (6 LEDs in total, no dedicated I/O for LEDs). one more input for push button to force next scan if fault is detected.
idea: you connect both ends of the cable to same testing device.
outputs are scanned continuously (and fast, maybe 100-200 Hz per second for example).
if everything is ok, you will read same thing on inputs as what you put to outputs. this is easy to compare.
if the input(feedback) matches output, go to next scan pattern.
otherwise stop and wait. allow press on button to force index to next pattern (one press, one increment).
so if everything is good, cycle all patterns, and all LEDS light up. if there is a problem cycle stops and LEDs tell you current (problematic) connection::
- no input LEDs means none of them are connected to currently active output (loose or no connection)
- if wrong input lights up, you know that that wire is swapped
- if multiple inputs light up, you can see which ones are shorted
this is simple to implement using TTL or CMOS chips too, but MCU can give additional flexibility, and this is trivial to program. also using more I/O, this can be quite flexible universal cable tester. ideally this would also have several common connectors (DB9, RJ45 etc.) for both input and output. it could be used to quickly reverse-eingineer any cable (along with jumpers as used in RS232 for handshaking). ideally it could have local 'library' of various cables and recognize them instantly. also connectivity to PC (RS232 or USB) would allow to get the detected connections into a computer (with database and cad) or to download from computer to cable tester as new or current test pattern.