日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)

發布時間:2024/7/23 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在嘗試用簡單的方法編寫測試Ada.Text_IO.Put.為簡單起見,這是一個我想測試的組合方法:

procedure Say_Something is

begin

Put("Something.");

end Say_Something;

在我的AUnit測試中,我有:

procedure Test_Put (T : in out Test) is

pragma Unreferenced (T);

use Ada.Text_IO;

Stdout : constant File_Type := Standard_Output;

Put_File_Name : constant String := "say_something_test.txt";

Put_File : File_Type;

Expected : constant String := "Something.";

begin

-- Create the output file and redirect output

Create (Put_File, Append_File, Put_File_Name);

Set_Output (Put_File);

Say_Something;

-- Redirect output to stdout and close the file

Set_Output (Stdout);

Close (Put_File);

-- Read file

declare

File_Size : constant Natural :=

Natural (Ada.Directories.Size (Put_File_Name));

Actual : String (1 .. File_Size);

begin

Actual := Read_File (Put_File_Name, File_Size);

Ada.Directories.Delete_File (Put_File_Name);

Assert (Expected = Actual,

"Expected " & '"' & Expected & '"' & ", " &

"Got " & '"' & Actual & '"');

end;

end Test_Put;

function Read_File (File_Name : String; File_Size : Natural)

return String is

subtype File_String is String (1 .. File_Size);

package File_String_IO is new Ada.Direct_IO (File_String);

File : File_String_IO.File_Type;

Contents : File_String;

begin

File_String_IO.Open (File, File_String_IO.In_File, File_Name);

File_String_IO.Read (File, Contents);

File_String_IO.Close (File);

return Contents;

end Read_File;

不幸的是,結果是:

FAIL Test Vectors.Put

Expected "Something.", Got "Something.

"

似乎Ada自動在文件末尾添加換行符.我意識到我可以添加一個(CR)LF到我期望的字符串,如下所示:

Expected : constant String := "Something.";

& Ada.Characters.Latin_1.CR

& Ada.Characters.Latin_1.LF;

但是a)改變我期望的字符串感覺不對,并且b)這將在Windows機器上運行,但在Unix/Linux/Mac上我將不得不放棄"CR".換句話說,我的測試運行的成功與平臺有關,而我的代碼則不然,這很糟糕.

所以我的問題是:如何在不附加換行符的情況下寫入文件?關于如何測試輸出的其他建議也非常受歡迎.

我已經看到了這個相關的問題,但除了我可能會嘗試Append_File而Out_File不是解決我的問題的模式之外,我無法從中推斷出任何有用的信息.

總結

以上是生活随笔為你收集整理的linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。