#!/usr/bin/env python3

import sys
import os
import subprocess


def test_cap(cap_name):
    subprocess.check("ngspice ...")


def test_res(res_name):
    subprocess.check("ngspice ...")



def main(arg):

    "cap_"   # capacitor  --> calculate capacitance
    "res_"   # resistance --> calculate resistance

    "diode_" # diode      --> 

    "fet_"   # fet output --> 
    "bjt_"   # bjt output --> beta value

    return 0

if __name__ == "__main__":
    import doctest
    fails, _ = doctest.testmod()
    if fails != 0:
        sys.exit(1)
    else:
        print("Tests Passed")
    sys.exit(main(sys.argv[1:]))
