• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

Kate

test_regression.h

Go to the documentation of this file.
00001 
00024 #ifndef TEST_REGRESSION_H
00025 #define TEST_REGRESSION_H
00026 
00027 #include <katejscript.h>
00028 #include <kateview.h>
00029 #include <kurl.h>
00030 #include <qobject.h>
00031 #include <qstringlist.h>
00032 #include <kjs/ustring.h>
00033 #include <kjs/object.h>
00034 #include <kjs/interpreter.h>
00035 
00036 class KateDocument;
00037 class KateView;
00038 class RegressionTest;
00039 class QTimer;
00040 
00041 namespace KParts {
00042   class URLArgs;
00043 }
00044 
00045 class OutputObject;
00046 
00051 class TestJScriptEnv : public KateJScript
00052 {
00053   public:
00054     TestJScriptEnv(KateDocument *part);
00055     virtual ~TestJScriptEnv();
00056 
00058     KJS::Object global() const { return *m_global; }
00060     KJS::Interpreter &interpreter() { return *m_interpreter; }
00062     KJS::Object document() const { return *m_document; }
00064     KJS::Object view() const { return *m_view; }
00066     OutputObject *output() const { return m_output; }
00067 
00068   protected:
00069     OutputObject *m_output;
00070 };
00071 
00075 class KateViewObject : public KJS::ObjectImp
00076 {
00077   public:
00078     KateViewObject(KJS::ExecState *exec, KateView *v, KJS::ObjectImp *fallback);
00079     virtual ~KateViewObject();
00080 
00081     virtual const KJS::ClassInfo *classInfo() const;
00082     virtual KJS::Value get(KJS::ExecState *exec, const KJS::Identifier &propertyName) const;
00083 
00084   private:
00085     // evil hack I: class layout of katejscript/KateJSView must be duplicated
00086     // here, structurally as well as functionally
00087     KateView *view;
00088     // end evil hack
00089     KJS::ObjectImp *fallback;
00090 };
00091 
00095 class KateViewFunction : public KJS::ObjectImp
00096 {
00097   public:
00098     KateViewFunction(KJS::ExecState *exec, KateView *v, int _id, int length);
00099 
00100     bool implementsCall() const;
00101     KJS::Value call(KJS::ExecState *exec, KJS::Object &thisObj, const KJS::List &args);
00102 
00103     enum { KeyReturn, Type, Backspace, DeleteWordLeft, KeyDelete,
00104       DeleteWordRight, Transpose, CursorLeft, ShiftCursorLeft, CursorRight,
00105       ShiftCursorRight, WordLeft, ShiftWordLeft, WordRight, ShiftWordRight,
00106       Home, ShiftHome, End, ShiftEnd, Up, ShiftUp, Down, ShiftDown, ScrollUp,
00107       ScrollDown, TopOfView, ShiftTopOfView, BottomOfView, ShiftBottomOfView,
00108       PageUp, ShiftPageUp, PageDown, ShiftPageDown, Top, ShiftTop, Bottom,
00109       ShiftBottom, ToMatchingBracket, ShiftToMatchingBracket };
00110   private:
00111     KateView *m_view;
00112     int id;
00113 };
00114 
00115 class OutputFunction;
00116 
00122 class OutputObject : public KJS::ObjectImp
00123 {
00124   public:
00125     OutputObject(KJS::ExecState *exec, KateDocument *d, KateView *v);
00126     virtual ~OutputObject();
00127 
00128     virtual KJS::UString className() const;
00129 
00130     void setChangedFlag(bool *flag) { changed = flag; }
00131     void setOutputString(QString *s) { outstr = s; }
00132 
00133   private:
00134     KateDocument *doc;
00135     KateView *view;
00136     bool *changed;
00137     QString *outstr;
00138 
00139     friend class OutputFunction;
00140 };
00141 
00146 class OutputFunction : public KJS::ObjectImp
00147 {
00148   public:
00149     OutputFunction(KJS::ExecState *exec, OutputObject *obj, int _id, int length);
00150 
00151     bool implementsCall() const;
00152     virtual KJS::Value call(KJS::ExecState *exec, KJS::Object &thisObj, const KJS::List &args);
00153 
00154     enum { Write, Writeln, WriteCursorPosition, WriteCursorPositionln };
00155   private:
00156     OutputObject *o;
00157     int id;
00158 };
00159 
00163 class RegressionTest : public QObject
00164 {
00165   Q_OBJECT
00166 public:
00167 
00168     RegressionTest(KateDocument *part, KConfig *baseConfig,
00169                    const QString &baseDir, const QString &outputDir,
00170                    bool _genOutput);
00171     ~RegressionTest();
00172 
00173     enum OutputType { ResultDocument };
00174     void testStaticFile(const QString& filename, const QStringList &commands);
00175     enum CheckResult { Failure = 0, Success = 1, Ignored = 2 };
00176     CheckResult checkOutput(const QString& againstFilename);
00177     enum FailureType { NoFailure = 0, AllFailure = 1, ResultFailure = 4, NewFailure = 65536 };
00178     bool runTests(QString relPath = QString::null, bool mustExist = false, int known_failure = NoFailure);
00179     bool reportResult( bool passed, const QString & description = QString::null, bool *newfailure = 0 );
00180     bool reportResult(CheckResult result, const QString & description = QString::null, bool *newfailure = 0 );
00181     void rereadConfig();
00182     static void createMissingDirs(const QString &path);
00183 
00184     void setFailureSnapshotConfig(KConfig *cfg, const QString &snapshotname);
00185     void setFailureSnapshotSaver(KConfig *cfg, const QString &snapshotname);
00186 
00187     void createLink( const QString& test, int failures );
00188     void doFailureReport( const QString& test, int failures );
00189 
00190     KateDocument *m_part;
00191     KateView *m_view;
00192     KConfig *m_baseConfig;
00193     QString m_baseDir;
00194     QString m_outputDir;
00195     bool m_genOutput;
00196     QString m_currentBase;
00197     KConfig *m_failureComp;
00198     KConfig *m_failureSave;
00199 
00200     QString m_currentOutput;
00201     QString m_currentCategory;
00202     QString m_currentTest;
00203 
00204     bool m_keepOutput;
00205     bool m_getOutput;
00206     bool m_showGui;
00207     int m_passes_work;
00208     int m_passes_fail;
00209     int m_passes_new;
00210     int m_failures_work;
00211     int m_failures_fail;
00212     int m_failures_new;
00213     int m_errors;
00214     bool saw_failure;
00215     bool ignore_errors;
00216     int m_known_failures;
00217     bool m_outputCustomised;
00218     QString m_outputString;
00219 
00220     static RegressionTest *curr;
00221 
00222 private:
00223     void printDescription(const QString& description);
00224 
00225     static bool svnIgnored( const QString &filename );
00226 
00227 private:
00234     bool evalJS( KJS::Interpreter &interp, const QString &filename, bool ignore = false);
00241     QStringList concatListFiles(const QString &relPath, const QString &filename);
00242 
00243 private slots:
00244     void slotOpenURL(const KURL &url, const KParts::URLArgs &args);
00245     void resizeTopLevelWidget( int, int );
00246 
00247 };
00248 
00249 #endif

Kate

Skip menu "Kate"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal