diff --git a/test_rsync_url.py b/test_rsync_url.py
index 0eecbf4..e1a3261 100644
--- a/test_rsync_url.py
+++ b/test_rsync_url.py
@@ -79,13 +79,13 @@
             logger.info('par = "{}", er = "{}"'.format(par, er))
             self.assertEqual(url.a_dir(par), er)
 
-    def url_in(self, remote, expected_result):
+    def url_dir(self, remote, expected_result):
         logger.info('For "{}" should be {}'.format(remote, expected_result))
         url = rsync_url.RsyncUrl(remote)
         self.log_locals(url)
         for par, er in expected_result.items():
             logger.info('par = "{}", er = "{}"'.format(par, er))
-            self.assertEqual(url.url_in(par), er)
+            self.assertEqual(url.url_dir(par), er)
 
     def a_file(self, remote, expected_result):
         logger.info('For "{}" should be {}'.format(remote, expected_result))
@@ -95,13 +95,13 @@
             logger.info('par = "{}", er = "{}"'.format(par, er))
             self.assertEqual(url.a_file(par), er)
 
-    def url_is(self, remote, expected_result):
+    def url_file(self, remote, expected_result):
         logger.info('For "{}" should be {}'.format(remote, expected_result))
         url = rsync_url.RsyncUrl(remote)
         self.log_locals(url)
         for par, er in expected_result.items():
             logger.info('par = "{}", er = "{}"'.format(par, er))
-            self.assertEqual(url.url_is(par), er)
+            self.assertEqual(url.url_file(par), er)
 
 testdata = yaml.load(open('test_rsync_url.yaml'))
 
