コード例 #1
0
ファイル: Form1.cs プロジェクト: akinomyoga/afh
        //===========================================================
        //		初期化
        //===========================================================
        public static BenchMethodAttribute GetAttribute(Ref::MethodInfo minfo, afh.Application.Log log)
        {
            object[] attrs = minfo.GetCustomAttributes(typeof(BenchMethodAttribute), false);
            if (attrs.Length == 0)
            {
                return(null);
            }

            BenchMethodAttribute attr = (BenchMethodAttribute)attrs[0];

            if (!minfo.IsStatic)
            {
                log.WriteLine("メソッド '{0}' は static でない為 Benchmark を実行出来ません。", minfo);
                return(null);
            }
            if (minfo.GetParameters().Length != 0)
            {
                log.WriteLine("メソッド '{0}' の呼び出しには引数が必要なので Benchmark を実行出来ません。", minfo);
                return(null);
            }
            return(attr);
        }
コード例 #2
0
 public static void tst_FloatRem(afh.Application.Log log)
 {
     log.WriteLine(11.2 % 3.1);
     log.WriteLine(-11.2 % 3.1);
     log.WriteLine(-11.2 - IntUtils.Floor(-11.2, 3.1));
     log.WriteLine(System.Math.IEEERemainder(-11.2, 3.1));
     log.WriteLine("--角度の実験--");
     log.WriteLine(System.Math.Atan2(-1, 1));
 }
コード例 #3
0
ファイル: UnitTest.cs プロジェクト: akinomyoga/afh
        public static void test_stringLineColumn(afh.Application.Log log)
        {
            const string sample = @"
今日は

作用なら

おほほほほほほほほ

";

            afh.Text.MultilineString mstr = new afh.Text.MultilineString(sample);
            log.DumpString(sample);
            log.WriteLine("3 行 1 列: {0}", mstr[3, 1]);
        }
コード例 #4
0
        private static string SearchAssemblyLocation(string str)
        {
            string cand = System.IO.Path.Combine(afh.Application.Path.ExecutableDirectory, str);

            if (System.IO.File.Exists(cand))
            {
                return(cand);
            }
            string cand2 = cand + ".dll";

            if (System.IO.File.Exists(cand2))
            {
                return(cand2);
            }
            cand2 = cand + ".exe";
            if (System.IO.File.Exists(cand2))
            {
                return(cand2);
            }

            cand = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), str);
            if (System.IO.File.Exists(cand))
            {
                return(cand);
            }
            cand2 = cand + ".dll";
            if (System.IO.File.Exists(cand2))
            {
                return(cand2);
            }
            cand2 = cand + ".exe";
            if (System.IO.File.Exists(cand2))
            {
                return(cand2);
            }

            log.WriteLine("指定したファイルは見つかりません。正しいファイル名を指定して下さい。");
            return(null);
        }
コード例 #5
0
        static void Main(string[] args)
        {
            System.Windows.Forms.Application.EnableVisualStyles();
            System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);

            log = afh.Application.LogView.Instance.CreateLog("afh.Tester");

            log.WriteLine(STR_紹介文);
            log.WriteLine("<引数>");
            foreach (string arg in args)
            {
                log.WriteLine(arg);
            }
            log.WriteLine("</引数>");
            log.WriteLine();


            if (args.Length == 0)
            {
                log.WriteLine("ファイルが指定されていません。.NET assembly を指定して下さい。");
                log.WriteLine(STR_説明);
            }
            else
            {
                string dllpath = SearchAssemblyLocation(args[0]);
                if (dllpath != null)
                {
                    wndMain = new Form1(dllpath);
                }
            }
            if (wndMain == null)
            {
                wndMain = new Form1();
            }

            System.Windows.Forms.Application.Run(wndMain);
        }
コード例 #6
0
 public static void tst_LongLiteral(afh.Application.Log log)
 {
     log.WriteLine(0x7ff0000000000000L);
     log.WriteLine(0x7ffL << 52);
 }
コード例 #7
0
        public static void tst_DoubleNaN(afh.Application.Log log)
        {
            log.Lock();
            log.WriteLine("NaN 同士");
            log.WriteLine(double.NaN == 0);
            log.WriteLine(double.NaN != 0);
            log.WriteLine(double.NaN == double.NaN);
            log.WriteLine(double.NaN != double.NaN);
            log.WriteLine(double.NaN < 0);
            log.WriteLine(double.NaN >= 0);
            log.WriteLine(double.NaN < double.NaN);
            log.WriteLine(double.NaN >= double.NaN);
            log.WriteLine();
            log.WriteLine("+∞ 同士");
            log.WriteLine(double.PositiveInfinity == double.PositiveInfinity);
            log.WriteLine(double.PositiveInfinity != double.PositiveInfinity);
            log.WriteLine(double.PositiveInfinity < double.PositiveInfinity);
            log.WriteLine(double.PositiveInfinity >= double.PositiveInfinity);
            log.WriteLine();
            log.WriteLine("-∞ 同士");
            log.WriteLine(double.NegativeInfinity == double.NegativeInfinity);
            log.WriteLine(double.NegativeInfinity != double.NegativeInfinity);
            log.WriteLine(double.NegativeInfinity < double.NegativeInfinity);
            log.WriteLine(double.NegativeInfinity >= double.NegativeInfinity);
            log.WriteLine();
            log.WriteLine("NaN > 色々");
            log.WriteLine(double.NaN > 0);
            log.WriteLine(double.NaN > 1);
            log.WriteLine(double.NaN > -1);
            log.WriteLine(double.NaN > double.NegativeInfinity);
            log.WriteLine(double.NaN > double.PositiveInfinity);
            log.WriteLine();
            log.Unlock();

            const double inf = double.PositiveInfinity;
            const double NaN = double.NaN;

            log.Lock();
            log.WriteLine("初等関数と NaN");
            log.WriteVar("Atan2(∞,∞)", System.Math.Atan2(inf, inf));
            log.WriteVar("Atan2(∞,NaN)", System.Math.Atan2(inf, NaN));
            log.WriteVar("Atan2(0,0)", System.Math.Atan2(0, 0));
            log.WriteVar("Sqrt(∞)", System.Math.Sqrt(inf));
            log.WriteVar("Sqrt(NaN)", System.Math.Sqrt(NaN));
            log.Unlock();
        }
コード例 #8
0
ファイル: UnitTest.cs プロジェクト: akinomyoga/afh
 public static void test_shoshiki(afh.Application.Log log)
 {
     log.WriteLine(123.ToString("D4"));
     log.WriteLine(123.ToString("F4"));
 }
コード例 #9
0
ファイル: Form1.cs プロジェクト: akinomyoga/afh
        //===========================================================
        //		計測
        //===========================================================
        public void Execute(afh.Application.Log log)
        {
            // 前書き
            log.Lock();
            log.WriteLine();
            log.WriteLine(STR_LINE);
            log.WriteLine("\tBenchmark を開始します。");
            log.WriteLine("\t\tMethodName:  {0}::{1}", minfo.DeclaringType.FullName, minfo.Name);
            if (this.Description != "")
            {
                log.WriteLine("\t\tDescription: {0}", this.Description);
            }
            log.WriteLine(STR_LINE);
            log.Unlock();

            try{
                int    loop  = 1;
                double msecs = 0;
                for (int i = 1; loop > 0; loop <<= 2, i++)
                {
                    log.WriteLine("第 {0} 回計測開始 (Loop 回数: {1} 回):", i, loop);
                    TimeSpan ts = this.meth(loop);
                    log.WriteLine("\t経過時間: {0} ms", msecs = ts.TotalMilliseconds);
                    if (ts.Seconds != 0)
                    {
                        break;
                    }
                    if (msecs < 16.0)
                    {
                        loop <<= 6;
                    }
                }

                double time  = msecs / loop;
                int    iunit = 0;
                if (time > 0)
                {
                    while (time < 1)
                    {
                        time *= 1000;
                        iunit++;
                    }
                }
                log.WriteLine("一回当たり時間: {0:F2} {1}s", time, units[iunit]);
            }catch (System.Exception e) {
                log.WriteError(e, "Bench の実行中に例外が発生しました。");
            }

            // 後書き
            log.Lock();
            log.WriteLine(STR_LINE);
            log.WriteLine("\tBenchmark を終了しました。");
            log.WriteLine(STR_LINE);
            log.Unlock();
        }
コード例 #10
0
ファイル: Form1.cs プロジェクト: akinomyoga/afh
        public void Execute(afh.Application.Log log)
        {
            // 前書き
            log.Lock();
            log.WriteLine();
            log.WriteLine(STR_LINE);
            log.WriteLine("\tTest を開始します。");
            log.WriteLine("\t\tMethodName:  {0}::{1}", info.DeclaringType.FullName, info.Name);
            if (description != "")
            {
                log.WriteLine("\t\tDescription: {0}", this.description);
            }
            log.WriteLine(STR_LINE);
            log.Unlock();

            bool   failed = false;
            object ret    = null;

            System.DateTime start = System.DateTime.Now;
            try {
                ret = this.info.Invoke(null, new object[] { log });
            }catch (System.Exception e) {
                log.WriteError(e, "Test の実行中に例外が発生しました。");
                failed = true;
            }
            System.TimeSpan ts = System.DateTime.Now - start;

            // 後書き
            log.Lock();
            if (!failed && info.ReturnType != typeof(void))
            {
                log.WriteLine(STR_LINE);
                log.WriteLine("戻り値 ({0}):", info.ReturnType);
                log.WriteLine(ret ?? "null");
            }
            log.WriteLine(STR_LINE);
            log.WriteLine("\tTest を終了しました。");
            log.WriteLine("\t\t経過時間: {0} ms", ts.TotalMilliseconds);
            log.WriteLine(STR_LINE);
            log.Unlock();
        }
コード例 #11
0
 public static void 列挙体確認(afh.Application.Log log)
 {
     log.WriteLine(afh.Text.GeneralCategory.C.ToString());
     log.WriteLine(afh.Text.UnicodeBlock.CJKCompatibilityIdeographs.ToString());
 }
コード例 #12
0
ファイル: AssemblyInfo.cs プロジェクト: akinomyoga/afh
 /// <summary>
 /// Window スレッドから呼び出して下さい。
 /// </summary>
 public static void Initialize()
 {
     log.WriteLine("afh.HTML 初期化終了");
 }