source: trunk/CrypPlugins/PrimeTest/PrimeTest.cs @ 1785

Last change on this file since 1785 was 1783, checked in by Sven Rech, 11 years ago

Changed input and output of PrimesGenerator and PrimeTest to BigInteger instead of String

File size: 3.7 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Cryptool.PluginBase.Tool;
6using Cryptool.PluginBase;
7using Cryptool.PluginBase.IO;
8using Primes.Bignum;
9using System.Numerics;
10
11namespace PrimeTest
12{
13  [PluginInfo(false, "Primetest", "Primetest", null, "PrimeTest/icon.png")] 
14 
15  public class PrimeTest:IThroughput
16  {
17    #region IPlugin Members
18
19    public event Cryptool.PluginBase.StatusChangedEventHandler OnPluginStatusChanged;
20    private void FireOnPluginStatusChangedEvent()
21    {
22      if (OnPluginStatusChanged != null) OnPluginStatusChanged(this, new StatusEventArgs(0));
23    }
24
25    public event Cryptool.PluginBase.GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
26    private void FireOnGuiLogNotificationOccuredEvent(string message, NotificationLevel lvl)
27    {
28      if (OnGuiLogNotificationOccured != null) OnGuiLogNotificationOccured(this, new GuiLogEventArgs(message, this, lvl));
29    }
30    private void FireOnGuiLogNotificationOccuredEventError(string message)
31    {
32      FireOnGuiLogNotificationOccuredEvent(message, NotificationLevel.Error);
33    }
34
35    public event Cryptool.PluginBase.PluginProgressChangedEventHandler OnPluginProgressChanged;
36    private void FireOnPluginProgressChangedEvent(string message, NotificationLevel lvl)
37    {
38      if (OnPluginProgressChanged != null) OnPluginProgressChanged(this, new PluginProgressEventArgs(0, 0));
39    }
40
41
42    public Cryptool.PluginBase.ISettings Settings
43    {
44      get { return new PrimeTestSettings(); }
45    }
46
47    public System.Windows.Controls.UserControl Presentation
48    {
49      get { return null; }
50    }
51
52    public System.Windows.Controls.UserControl QuickWatchPresentation
53    {
54      get { return null; }
55    }
56
57    public void PreExecution()
58    {
59    }
60
61    public void Execute()
62    {
63      if (m_Value != null)
64        Output = m_Value.IsProbablePrime(10);
65      else
66        Output = false;
67    }
68
69    public void PostExecution()
70    {
71    }
72
73    public void Pause()
74    {
75    }
76
77    public void Stop()
78    {
79    }
80
81    public void Initialize()
82    {
83    }
84
85    public void Dispose()
86    {
87    }
88
89    #endregion
90
91    #region INotifyPropertyChanged Members
92
93    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
94    private void FirePropertyChangeEvent(string propertyName)
95    {
96      if (PropertyChanged != null) PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
97    }
98    #endregion
99
100    #region Properties
101    private BigInteger m_InputNumber;
102    PrimesBigInteger m_Value = null;
103    [PropertyInfo(Direction.InputData, "Text input", "Input a BigInteger", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text,null)]
104    public BigInteger InputNumber
105    {
106      get { return this.m_InputNumber; }
107      set
108      {
109        if (value != m_InputNumber)
110        {
111          try
112          {
113            this.m_InputNumber = value;
114            m_Value = new PrimesBigInteger(m_InputNumber.ToString());
115            FirePropertyChangeEvent("InputString");
116          }
117          catch 
118          {
119            FireOnGuiLogNotificationOccuredEventError("Damn");
120          }
121        }
122      }
123    }
124
125    private bool m_Output;
126    // [QuickWatch(QuickWatchFormat.Text, DisplayLevel.Beginner, null)]
127    [PropertyInfo(Direction.OutputData, "Boolean output", "True if input is a prime number, otherwise false", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
128    public bool Output
129    {
130      get { return this.m_Output; }
131      set
132      {
133        m_Output = value;
134        FirePropertyChangeEvent("Output");
135      }
136    }
137    #endregion
138  }
139}
Note: See TracBrowser for help on using the repository browser.