diff --git tests/views_argument_validator.test tests/views_argument_validator.test
new file mode 100644
index 0000000..2d029d1
--- /dev/null
+++ tests/views_argument_validator.test
@@ -0,0 +1,100 @@
+<?php
+// $Id$
+module_load_include('inc', 'views', 'tests/views_query');
+
+class viewsArgumentValidatorTest extends ViewsSqlTest {
+  function getInfo() {
+    return array(
+      'name' => t('Argument validator tests.'),
+      'group' => t('Views'),
+      'description' => t('Test argument validator tests.'),
+    );
+  }
+
+  function testArgumentValidatePhp() {
+    $string = $this->randomName();
+    $view = $this->view_test_argument_validate_php($string);
+    $view->set_display('default');
+    $view->pre_execute();
+    $view->init_handlers();
+    $this->assertTrue($view->argument['null']->validate_arg($string));
+    // Reset safed argument validation.
+    $view->argument['null']->argument_validated = NULL;
+    $this->assertFalse($view->argument['null']->validate_arg($this->randomName()));
+  }
+
+  function testArgumentValidateNumeric() {
+    $view = $this->view_argument_validate_numeric();
+    $view->set_display('default');
+    $view->pre_execute();
+    $view->init_handlers();
+    $this->assertFalse($view->argument['null']->validate_arg($this->randomString()));
+    // Reset safed argument validation.
+    $view->argument['null']->argument_validated = NULL;
+    $this->assertTrue($view->argument['null']->validate_arg(12));
+  }
+
+  function view_test_argument_validate_php($string) {
+    $code = 'return $argument == '. $string .';';
+    $view = new view;
+    $view->name = 'view_argument_validate_numeric';
+    $view->description = '';
+    $view->tag = '';
+    $view->view_php = '';
+    $view->base_table = 'node';
+    $view->is_cacheable = FALSE;
+    $view->api_version = 2;
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Defaults */
+    $handler = $view->new_display('default', 'Defaults', 'default');
+    $handler->display->display_options['access']['type'] = 'none';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'fields';
+    /* Argument: Global: Null */
+    $handler->display->display_options['arguments']['null']['id'] = 'null';
+    $handler->display->display_options['arguments']['null']['table'] = 'views';
+    $handler->display->display_options['arguments']['null']['field'] = 'null';
+    $handler->display->display_options['arguments']['null']['style_plugin'] = 'default_summary';
+    $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
+    $handler->display->display_options['arguments']['null']['validate_type'] = 'php';
+    $handler->display->display_options['arguments']['null']['validate_options']['code'] = $code;
+    $handler->display->display_options['arguments']['null']['must_not_be'] = 0;
+
+    return $view;
+  }
+
+  function view_argument_validate_numeric() {
+    $view = new view;
+    $view->name = 'view_argument_validate_numeric';
+    $view->description = '';
+    $view->tag = '';
+    $view->view_php = '';
+    $view->base_table = 'node';
+    $view->is_cacheable = FALSE;
+    $view->api_version = 2;
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Defaults */
+    $handler = $view->new_display('default', 'Defaults', 'default');
+    $handler->display->display_options['access']['type'] = 'none';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'fields';
+    /* Argument: Global: Null */
+    $handler->display->display_options['arguments']['null']['id'] = 'null';
+    $handler->display->display_options['arguments']['null']['table'] = 'views';
+    $handler->display->display_options['arguments']['null']['field'] = 'null';
+    $handler->display->display_options['arguments']['null']['style_plugin'] = 'default_summary';
+    $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
+    $handler->display->display_options['arguments']['null']['validate_type'] = 'numeric';
+    $handler->display->display_options['arguments']['null']['must_not_be'] = 0;
+
+    return $view;
+  }
+}
\ No newline at end of file
