Пример #1
0
        public void MapleEngineTest()
        {
            var engine = new MapleEngine(path);

            var defPath = engine.GetType().GetField("MaplePath", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(engine);

            Assert.IsNotNull(defPath);
            Assert.AreEqual(path, defPath);
        }
Пример #2
0
        public void OpenTest()
        {
            var engine = new MapleEngine(path);

            try
            {
                Assert.IsNull(engine.GetType().GetField("MapleProcess", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(engine));
                engine.Open();
                Assert.IsNotNull(engine.GetType().GetField("MapleProcess", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(engine));
                engine.Close();
            } catch (Win32Exception)
            {
                Assert.Fail("Invalid Path.");
            }
        }
Пример #3
0
        public void SimplifyTest()
        {
            var engine = new MapleEngine(path);

            try
            {
                engine.Open();
                var simplified = engine.Simplify("15*x + 7*x").Result;
                Assert.AreEqual("22*x", simplified.Replace("\r\n", string.Empty));
                engine.Close();
            }
            catch (Win32Exception)
            {
                Assert.Fail("Invalid Path.");
            }
        }
Пример #4
0
    public void Open()
    {
        argv[0] = "maple";
        argv[1] = "-A2";

        cb.textCallBack     = cbText;
        cb.errorCallBack    = cbError;
        cb.statusCallBack   = cbStatus;
        cb.readlineCallBack = null;
        cb.redirectCallBack = null;
        cb.streamCallBack   = null;
        cb.queryInterrupt   = null;
        cb.callbackCallBack = null;

        #region Thử khởi động Maple và bẫy lỗi (nếu có)
        try
        {
            kv = MapleEngine.StartMaple(2, argv, ref cb, IntPtr.Zero, IntPtr.Zero, err);
        }
        catch (DllNotFoundException e)
        {
            //MessageBox.Show(e.ToString());
            Console.WriteLine(e.ToString());
            return;
        }
        catch (EntryPointNotFoundException e)
        {
            //MessageBox.Show(e.ToString());
            Console.WriteLine(e.ToString());
            return;
        }

        // make sure we got a good kernel vector handle back
        if (kv.ToInt64() == 0)
        {
            // Maple didn't start properly.  The "err" parameter will be filled
            // in with the reason why (usually a license error)
            // Note that since we passed in a byte[] array we need to trim
            // the characters past \0 during conversion to string
            //MessageBox.Show("Fatal Error, could not start Maple: "
            //        + System.Text.Encoding.ASCII.GetString(err, 0, Array.IndexOf(err, (byte)0)));
            Console.WriteLine("Fatal Error, could not start Maple: "
                              + System.Text.Encoding.ASCII.GetString(err, 0, Array.IndexOf(err, (byte)0)));
            return;
        }
        #endregion
    }
Пример #5
0
    public void Run(string query)
    {
        try
        {
            // set the default plot driver to something nicer than "char"
            MapleEngine.EvalMapleStatement(kv, Encoding.ASCII.GetBytes("plotsetup(maplet):"));
        }
        catch
        {
            //MessageBox.Show("Maple chưa được Open");
            Console.WriteLine("Maple chưa được Open");
            return;
        }

        try
        {
            // Kiểm tra user có sử dụng help hay không ?
            if (query.Substring(0, 1) == "?")
            {
                query = "help(" + query.Substring(1, 0) + ");";
            }
        }
        catch
        {
            //MessageBox.Show("Lỗi do user input không hợp lệ");
            Console.WriteLine("Lỗi do user input không hợp lệ");
            return;
        }

        // Định giá trị đã được input, tính toán tức thời và gởi giá trị output
        // đến callback dưới dạng text (cbText). Điều này cũng đồng nghĩa với việc trả về
        // một kết quả. Kết quả được hiển thị bởi dạng string thông qua biến myResult
        IntPtr val = MapleEngine.EvalMapleStatement(kv, Encoding.ASCII.GetBytes(query + ";"));

        // check if user typed quit/done/stop
        if (MapleEngine.IsMapleStop(kv, val).ToInt32() != 0)
        {
            MapleEngine.StopMaple(kv);
        }
    }