TestTransfer.cs :  » Network-Clients » edtFTPnet » EnterpriseDT » Net » Ftp » Test » C# / CSharp Open Source

Home
C# / CSharp Open Source
1.2.6.4 mono .net core
2.2.6.4 mono core
3.Aspect Oriented Frameworks
4.Bloggers
5.Build Systems
6.Business Application
7.Charting Reporting Tools
8.Chat Servers
9.Code Coverage Tools
10.Content Management Systems CMS
11.CRM ERP
12.Database
13.Development
14.Email
15.Forum
16.Game
17.GIS
18.GUI
19.IDEs
20.Installers Generators
21.Inversion of Control Dependency Injection
22.Issue Tracking
23.Logging Tools
24.Message
25.Mobile
26.Network Clients
27.Network Servers
28.Office
29.PDF
30.Persistence Frameworks
31.Portals
32.Profilers
33.Project Management
34.RSS RDF
35.Rule Engines
36.Script
37.Search Engines
38.Sound Audio
39.Source Control
40.SQL Clients
41.Template Engines
42.Testing
43.UML
44.Web Frameworks
45.Web Service
46.Web Testing
47.Wiki Engines
48.Windows Presentation Foundation
49.Workflows
50.XML Parsers
C# / C Sharp
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source » Network Clients » edtFTPnet 
edtFTPnet » EnterpriseDT » Net » Ftp » Test » TestTransfer.cs
// edtFTPnet
// 
// Copyright (C) 2004 Enterprise Distributed Technologies Ltd
// 
// www.enterprisedt.com
// 
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
// 
// Bug fixes, suggestions and comments should posted on 
// http://www.enterprisedt.com/forums/index.php
// 
// Change Log:
// 
// $Log: TestTransfer.cs,v $
// Revision 1.6  2008-06-17 06:12:13  bruceb
// net cf changes
//
// Revision 1.5  2007/04/21 22:11:05  bruceb
// catch diff exception
//
// Revision 1.4  2006/06/22 12:41:48  bruceb
// FTPException to FileTransferException
//
// Revision 1.3  2005/08/04 21:55:46  bruceb
// changes for re-jigged test subdirs
//
// Revision 1.2  2004/11/20 22:39:32  bruceb
// added to edtFTPnet test category
//
// Revision 1.1  2004/11/13 19:14:33  bruceb
// first cut of tests
//
//

using System;
using System.IO;
using FTPTransferTypeEnterpriseDT.Net.Ftp.FTPTransferType;
using FTPExceptionEnterpriseDT.Net.Ftp.FTPException;
using NUnit.Framework;

namespace EnterpriseDT.Net.Ftp.Test{
  /// <summary>  
  /// Test get'ing and put'ing of remote files in various ways
  /// </summary>
  /// <author>      Bruce Blackshaw
  /// </author>
  /// <version>     $Revision: 1.6 $
  /// </version>
  [TestFixture]
    [Category("edtFTPnet")]
  public class TestTransfer:FTPTestCase
  {
    /// <summary>  Get name of log file
    /// 
    /// </summary>
    /// <returns> name of file to log to
    /// </returns>
    override internal string LogName
    {
      get
      {
        return "TestTransfer.log";
      }
    }
    
    /// <summary>  Test transfering a binary file</summary>
    [Test]
    public virtual void TransferBinary()
    {
      log.Debug("TransferBinary()");
      
      Connect();
      Login();
            
      // move to test directory
      ftp.ChDir(testdir);
      ftp.TransferType = FTPTransferType.BINARY;
      
      // put to a random filename
      string filename = GenerateRandomFilename();
      ftp.Put(localDataDir + localBinaryFile, filename);
      
      // get it back        
      ftp.Get(localDataDir + filename, filename);
            
            // get it back again - should be overwritten     
      ftp.Get(localDataDir + filename, filename);
      
      // delete remote file
      ftp.Delete(filename);
      try
      {
        ftp.ModTime(filename);
        Assert.Fail(filename + " should not be found");
      }
      catch (FileTransferException ex)
      {
        log.Debug("Expected exception: " + ex.Message);
      }
      
      // check equality of local files
      AssertIdentical(localDataDir + localBinaryFile, localDataDir + filename);
      
      // and delete local file
      FileInfo local = new FileInfo(localDataDir + filename);
            local.Delete();
      
      ftp.Quit();
    }
    
    /// <summary>  Test transfering a text file</summary>
    [Test]
        public virtual void TransferText()
    {      
      log.Debug("TransferText()");
      
      Connect();
      Login();
      
      // move to test directory
      ftp.ChDir(testdir);
      ftp.TransferType = FTPTransferType.ASCII;
      
      // put to a random filename
      string filename = GenerateRandomFilename();
      ftp.Put(localDataDir + localTextFile, filename);
      
      // get it back        
      ftp.Get(localDataDir + filename, filename);
      
      // delete remote file
      ftp.Delete(filename);
      try
      {
        ftp.ModTime(filename);
        Assert.Fail(filename + " should not be found");
      }
      catch (FileTransferException ex)
      {
        log.Debug("Expected exception: " + ex.Message);
      }
      
      // check equality of local files
      AssertIdentical(localDataDir + localTextFile, localDataDir + filename);
      
      // and delete local file
      FileInfo local = new FileInfo(localDataDir + filename);
            local.Delete();
      
      ftp.Quit();
    }
    
    /// <summary> Test getting a byte array</summary>
        [Test]
    public virtual void GetBytes()
    {      
      log.Debug("GetBytes()");
      
      Connect();
      Login();
            
      // move to test directory
      ftp.ChDir(testdir);
      ftp.TransferType = FTPTransferType.BINARY;
      
      // get the file and work out its size
      string filename1 = GenerateRandomFilename();
      ftp.Get(localDataDir + filename1, remoteBinaryFile);
      FileInfo file1 = new FileInfo(localDataDir + filename1);
      
      // now get to a buffer and check the length
      byte[] result = ftp.Get(remoteBinaryFile);
            log.Debug("Got buffer for " + remoteBinaryFile + ": len=" + result.Length);
            Assert.AreEqual(result.Length, file1.Length);
      
      // put the buffer         
      string filename2 = GenerateRandomFilename();
      ftp.Put(result, filename2);
      
      // get it back as a file
      ftp.Get(localDataDir + filename2, filename2);
      
      // remove it remotely
      ftp.Delete(filename2);
      
      // and now check files are identical
      FileInfo file2 = new FileInfo(localDataDir + filename2);
      AssertIdentical(file1, file2);
      
      // and finally delete them
            file1.Delete();
            file2.Delete();
            
      ftp.Quit();
    }
    
    /// <summary>  Test the stream functionality</summary>
        [Test]
        public virtual void TransferStream()
        {
      log.Debug("TransferStream()");
      
      Connect();
      Login();
      
        // move to test directory
      ftp.ChDir(testdir);
      ftp.TransferType = FTPTransferType.BINARY;
      
      // get file as output stream        
      MemoryStream output = new MemoryStream();
      ftp.Get(output, remoteBinaryFile);
      
      // convert to byte array
      byte[] result1 = output.ToArray();
      
      // put this 
      string filename = GenerateRandomFilename();
            ftp.Put(new MemoryStream(result1), filename);
      
      // get it back
      byte[] result2 = ftp.Get(filename);
      
      // delete remote file
      ftp.Delete(filename);
      
      // and compare the buffers
      AssertIdentical(result1, result2);
      
      ftp.Quit();
    }
    
    /// <summary>  Test the append functionality in put()</summary>
        [Test]
        public virtual void PutAppend()
    {
      log.Debug("PutAppend()");
      
      Connect();
      Login();
      
      // move to test directory
      ftp.ChDir(testdir);
      ftp.TransferType = FTPTransferType.BINARY;
      
      // put to a random filename
      string filename = GenerateRandomFilename();
      ftp.Put(localDataDir + localBinaryFile, filename);
      
      // second time, append
      ftp.Put(localDataDir + localBinaryFile, filename, true);
      
      // get it back & delete remotely
      ftp.Get(localDataDir + filename, filename);
      ftp.Delete(filename);
      
      // check it is twice the size
      FileInfo file1 = new FileInfo(localDataDir + localBinaryFile);
      FileInfo file2 = new FileInfo(localDataDir + filename);
      Assert.AreEqual(file1.Length * 2, file2.Length);
      
      // and finally delete it
            file2.Delete();
      
      ftp.Quit();
    }
    
    /// <summary>  Test transferring empty files</summary>
        [Test]
    public virtual void TransferEmpty()
    {
      log.Debug("TransferEmpty()");
      
      Connect();
      Login();
      
      // move to test directory
      ftp.ChDir(testdir);
      
      // get an empty file
      ftp.Get(localDataDir + remoteEmptyFile, remoteEmptyFile);
      FileInfo empty = new FileInfo(localDataDir + remoteEmptyFile);
            Assert.AreEqual(0, empty.Length);
            
      // delete it
      empty.Delete();
      
      // put an empty file
      ftp.Put(localDataDir + localEmptyFile, localEmptyFile);
      
      // get it back as a different filename
      string filename = GenerateRandomFilename();
      ftp.Get(localDataDir + filename, localEmptyFile);
      empty = new FileInfo(localDataDir + filename);
      Assert.AreEqual(0, empty.Length);
      
      // delete file we got back (copy of our local empty file)
      empty.Delete();
      
      // and delete the remote empty file we
      // put there
      ftp.Delete(localEmptyFile);
      
      ftp.Quit();
    }
    
    /// <summary>  Test transferring non-existent files</summary>
    [Test]
    public virtual void TransferNonExistent()
    {  
      log.Debug("TransferNonExistent()");
      
      Connect();
      Login();
      
      // move to test directory
      ftp.ChDir(testdir);
      
      // generate a name & try to get it
      string filename = GenerateRandomFilename();
      try
      {
        ftp.Get(filename, filename);
        Assert.Fail(filename + " should not be found");
      }
      catch (FileTransferException ex)
      {
        log.Debug("Expected exception: " + ex.Message);
        
        // ensure we don't have a local file of that name produced
        FileInfo file = new FileInfo(filename);
                Assert.IsFalse(file.Exists);
      }
      
      // generate name & try to put
      filename = GenerateRandomFilename();
      try
      {
        ftp.Put(filename, filename);
        Assert.Fail(filename + " should not be found");
      }
      catch (FileTransferException ex)
      {
        log.Debug("Expected exception: " + ex.Message);
      }
      
      ftp.Quit();
    }
  }
}
www.java2v.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.