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); }
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."); } }
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."); } }
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 }
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); } }