Example #1
0
        public void PrivateメンバのimportDatとexportDatの整合性を確認する()
        {
            //const bool isJp = true;

            var list = new ListVal();

            list.Add(new OneVal("combo", 0, Crlf.Nextline,
                                new CtrlComboBox("コンボボックス", new[] { "DOWN", "PU", "FULL" }, 200)));
            list.Add(new OneVal("fileName2", "c:\\work", Crlf.Nextline,
                                new CtrlFolder("フォルダ", 30, new Kernel())));
            list.Add(new OneVal("text", "user1", Crlf.Nextline, new CtrlTextBox("テキスト入力", 30)));
            list.Add(new OneVal("hidden", "123", Crlf.Nextline, new CtrlHidden("パスワード", 30)));
            var sut      = new CtrlDat("help", list, 100, LangKind.Jp);
            var tabindex = 0;

            sut.Create(null, 0, 0, null, ref tabindex);

            var input = new List <String>();

            input.Add("#	0	c:\\work	user1	c3a5e1369325e2ca");
            input.Add(" 	1	c:\\work	user2	b867684066caf9dc");
            input.Add(" 	2	c:\\work	user3	4911d0d49c8911ed");

            try{
                //リフレクションによるprivateメンバへのアクセス
                var cls       = sut;
                var type      = cls.GetType();
                var exportDat = type.GetMethod("ExportDat", BindingFlags.NonPublic | BindingFlags.Instance);
                var importDat = type.GetMethod("ImportDat", BindingFlags.NonPublic | BindingFlags.Instance);
                importDat.Invoke(cls, new object[] { input });
                var output = (List <String>)exportDat.Invoke(cls, new object[] {});
                for (var i = 0; i < input.Count; i++)
                {
                    Assert.That(input[i], Is.EqualTo(output[i]));
                }
            }
            catch (Exception e) {
                Assert.Fail(e.Message);
            }
        }
Example #2
0
        //OneValの生成
        //デフォルト値(nullを設定した場合、適切な値を自動でセットする)
        public static OneVal CreateOneVal(CtrlType ctrlType, Object val)
        {
            //Kernel kernel = new Kernel();
            const string help = "help";
            OneCtrl      oneCtrl;

            switch (ctrlType)
            {
            case CtrlType.CheckBox:
                if (val == null)
                {
                    val = true;
                }
                oneCtrl = new CtrlCheckBox(help);
                break;

            case CtrlType.Int:
                if (val == null)
                {
                    val = 1;
                }
                oneCtrl = new CtrlInt(help, 3);                         // 3桁で決め打ち
                break;

            case CtrlType.File:
                if (val == null)
                {
                    val = "1.txt";
                }
                oneCtrl = new CtrlFile(help, 200, new Kernel());
                break;

            case CtrlType.Folder:
                if (val == null)
                {
                    val = "c:\temp";
                }
                oneCtrl = new CtrlFolder(help, 200, new Kernel());
                break;

            case CtrlType.TextBox:
                if (val == null)
                {
                    val = "abc";
                }
                oneCtrl = new CtrlTextBox(help, 20);
                break;

            case CtrlType.Radio:
                if (val == null)
                {
                    val = 0;
                }
                oneCtrl = new CtrlRadio(help, new[] { "1", "2", "3" }, 30, 3);
                break;

            case CtrlType.Font:
                if (val == null)
                {
                    val = new Font("MS ゴシック", 10f);
                }
                oneCtrl = new CtrlFont(help, LangKind.Jp);
                break;

            case CtrlType.Memo:
                if (val == null)
                {
                    val = "1";
                }
                oneCtrl = new CtrlMemo(help, 10, 10);
                break;

            case CtrlType.Hidden:
                if (val == null)
                {
                    val = "";
                }
                oneCtrl = new CtrlHidden(help, 30);
                break;

            case CtrlType.AddressV4:
                if (val == null)
                {
                    val = "";
                }
                oneCtrl = new CtrlAddress(help);
                break;

            case CtrlType.BindAddr:
                if (val == null)
                {
                    val = "V4ONLY,INADDR_ANY,IN6ADDR_ANY_INIT";
                }
                var list = new List <Ip>();
                try {
                    list.Add(new Ip(IpKind.InAddrAny));
                    list.Add(new Ip("192.168.0.1"));
                } catch (ValidObjException ex) {
                    Assert.Fail(ex.Message);
                }
                oneCtrl = new CtrlBindAddr(help, list.ToArray(), list.ToArray());
                break;

            case CtrlType.ComboBox:
                //listを{"1","2"}で決め打ち

                if (val == null)
                {
                    val = 0;
                }
                oneCtrl = new CtrlComboBox(help, new[] { "1", "2" }, 10);
                break;

            case CtrlType.Dat:
                //カラムはTEXTBOX×2で決め打ち
                var listVal = new ListVal {
                    new OneVal("name1", true, Crlf.Nextline, new CtrlCheckBox("help")),
                    new OneVal("name2", true, Crlf.Nextline, new CtrlCheckBox("help"))
                };

                if (val == null)
                {
                    val = new Dat(new[] { CtrlType.CheckBox, CtrlType.CheckBox });
                }

                oneCtrl = new CtrlDat(help, listVal, 300, LangKind.Jp);
                break;

            default:
                throw new Exception(ctrlType.ToString());
            }
            return(new OneVal("name", val, Crlf.Nextline, oneCtrl));
        }
Example #3
0
        //出力ファイル(Option.ini)からの入力用<br>
        //不正な文字列があった場合は、無効行として無視される<br>
        public bool FromReg(String str)
        {
            if (str == null)
            {
                Value = null;
                return(false);
            }
            switch (OneCtrl.GetCtrlType())
            {
            case CtrlType.Dat:
                CtrlDat ctrlDat = (CtrlDat)OneCtrl;
                Dat     dat     = new Dat(ctrlDat.CtrlTypeList);
                if (!dat.FromReg(str))
                {
                    Value = null;
                    return(false);
                }
                //Ver5.8.7 Java fix Datの中にComboBoxが存在する場合の旧バージョンの変換
                foreach (var d in dat)
                {
                    for (int i = 0; i < ctrlDat.ListVal.Count; i++)
                    {
                        if (ctrlDat.ListVal[i].OneCtrl.GetCtrlType() == CtrlType.ComboBox)
                        {
                            int val;
                            if (!int.TryParse(d.StrList[i], out val))
                            {
                                //Ver5.7.x以前のデータ
                                OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, ctrlDat.ListVal[i].OneCtrl);
                                if (dmy.FromRegConv(d.StrList[i]))
                                {
                                    d.StrList[i] = dmy.ToReg(false);
                                }
                            }
                        }
                    }
                }
                Value = dat;
                break;

            case CtrlType.CheckBox:
                try {
                    Value = Boolean.Parse(str);
                } catch {
                    Value = false;
                    return(false);
                }
                break;

            case CtrlType.Font:
                Value = null;
                var tmp = str.Split(',');
                if (tmp.Length == 3)
                {
                    try{
                        var family = new FontFamily(tmp[0]);
                        var size   = (float)Convert.ToDouble(tmp[1]);
                        var style  = (FontStyle)Enum.Parse(typeof(FontStyle), tmp[2]);
                        Value = new Font(family, size, style);
                    }catch (Exception) {
                        Value = null;
                    }
                }
                if (Value == null)
                {
                    return(false);
                }
                break;

            case CtrlType.Memo:
                Value = Util.SwapStr("\t", "\r\n", str);
                break;

            case CtrlType.File:
            case CtrlType.Folder:
            case CtrlType.TextBox:
                Value = str;
                break;

            case CtrlType.Hidden:
                try{
                    Value = Crypt.Decrypt(str);
                }
                catch (Exception) {
                    Value = "";
                    return(false);
                }
                break;

            case CtrlType.Radio:
                try{
                    Value = Int32.Parse(str);
                }catch (Exception) {
                    Value = 0;
                    return(false);
                }
                if ((int)Value < 0)
                {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.ComboBox:
                int max = ((CtrlComboBox)OneCtrl).Max;
                try {
                    var n = Int32.Parse(str);
                    if (n < 0 || max <= n)
                    {
                        Value = 0;
                        return(false);
                    }
                    Value = n;
                } catch {
                    Value = 0;
                    //Ver5.9.2 Ver5.7.x以前のデータのコンバート
                    OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, OneCtrl);
                    if (dmy.FromRegConv(str))
                    {
                        int n;
                        Int32.TryParse(dmy.ToReg(false), out n);
                        if (n < 0 || max <= n)
                        {
                            Value = 0;
                            return(false);
                        }
                        Value = n;
                    }
                    return(false);
                }
                break;

            case CtrlType.Int:
                try {
                    Value = Int32.Parse(str);
                } catch {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.BindAddr:
                try{
                    Value = new BindAddr(str);
                }
                catch (ValidObjException) {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.AddressV4:
                try{
                    Value = new Ip(str);
                }
                catch (ValidObjException) {
                    Value = null;
                    return(false);
                }
                break;

            case CtrlType.TabPage:
            case CtrlType.Group:
                break;

            default:
                Value = 0;
                return(false);
                // "実装されていないCtrlTypeが指定されました OneVal.fromReg()"
            }
            return(true);
        }