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不是解决我的问题的模式之外,我无法从中推断出任何有用的信息.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode笔记】226. 翻转二叉树(Java、递归)

文章目录题目描述代码 & 思路更新版题目描述 感觉和合并二叉树类似,都是很好进行递归的问题 代码 & 思路 翻转当前结点的左、右结点对当前结点的左、右结点进行翻转函数【自底向上】 /*** Definition for a binary tree node.* public class TreeNode …

virtualbox linux 分辨率,终于搞定了VirtualBox的ubuntu分辨率问题

曾经装了ubuntu,但是觉得和windows切换太麻烦了,要重启机器,导致的结果是linux装上了总是不用。这次决定使用虚拟机,因为我用ubuntu就是ssh一下实验室的服务器,所以对性能没什么要求。在所里的时候看到祝师兄总用vmwar…

【LeetCode笔记】160. 相交链表(Java、链表)

文章目录题目描述思路 & 代码题目描述 感谢这道题,让我更加了解到Dalao们思路的nb主要是满足空间复杂度O(1)。否则用哈希表不难实现。 思路 & 代码 有相交结点的情况下,可以找到这么一个等式: // 假设链表长度为m,n&…

linux 离线安装nfs,ubuntu 上离线安装包制作与安装之NFS搭建

在Ubuntu上离线搭建NFS服务器一、制作离线软件包在联网且环境与你相同的电脑上 制作离线软件包注:先查看有没有安装nfs-utils的安装包 命令:# rpm -q nfs-utils1、下载软件所需deb包#sudo apt-get install nfs-kernel-server下载后安装包在/var/cache/ap…

【LeetCode笔记】152. 乘积最大子数组(Java、动态规划)

文章目录题目描述思路 & 代码更新版题目描述 考虑正数、负数和0的情况 思路 & 代码 既然是使用的动态规划,那么有以下几点: 维护什么:维护iMax和iMin,分别代表包含当前值的子数组的最大乘积 & 最小乘积什么时候转…

Linux安装winetim简单教程,[转载]wine安装最新版TIM

[版权声明:本文为转载,并按照个人实际操作步骤替换为了TIM安装,原文为QQ安装过程。]1. 安装wine本次教程只需要安装最新版本的wine,并不需要winetricks、wine-mono、wine-gecko等其他插件,目前经实际测试发现只运行Win…

【LeetCode笔记】283. 移动零(Java)

文章目录题目描述思路 & 代码更新版题目描述 原地操作 & 减少操作次数:不能直接只拷非零数,也不要每次都一个个推动整个数组 思路 & 代码 维护一个noZeroNums,代表当前循环遇到的非0数的数量第一趟先不管0的数量,…

c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#

最近,我被要求实现一个类作为选择过程的一部分。我按要求做了这个节目。但是,我考试不及格。我真的很想知道我的解决方案出了什么问题。任何帮助都非常感谢。问题和我的解决方案如下实现一个线程安全类,该类在构造过程中每秒触发一个事件。需要有一个函数来查找经过的秒数。这个…

【LeetCode笔记】448. 找到所有不存在的数(Java、原地)

文章目录题目描述思路 & 代码题目描述 说实话,第一眼看题让我想到那道“往1 ~ 1024中加入一个数,用中学生也会的方法找到这个数"(答案是 (1024! x) - 1024! )如果没有时空复杂度限制的话,用哈希…

c语言中标识符和关键字,C语言(三) C 标识符和关键字

一.标识符1.标识符的作用:C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称2.标识符的规范:一个标识符只能以字母 A-Z 或 a-z 或下划线 _ 开始 后跟零个或多个字母、下划线和数字(0-9),第二位开始也只能用 A-Z…

【LeetCode笔记】146. LRU缓存机制(Java、双向链表、哈希表)

文章目录题目描述思路 & 代码LinkedHashMap 的写法题目描述 大名鼎鼎的超高频面试题太感动,在这道题上花了太多时间了,今天终于补上博客了TvT 思路 & 代码 结构用的是:双向链表 哈希表。可以满足O(1)时间复杂度put()&#xff1a…

c语言random函数在vc,C++ 中随机函数random函数的使用方法

C 中随机函数random函数的使用方法一、random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C下的rand函数来实现。1、C标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。…

计算思维c语言软件,C语言编程入门与计算思维

课程概况This specialization is designed to let you explore computational thinking and beginning C programming topics, applying those concepts to develop solutions to a variety of practical problems.The first course assumes no programming experience, and th…

simulink和c语言开发,Simulink之嵌入式C代码生成-应用层和底层的接口

今天给大家带来的仍然是基于MBD的嵌入式代码生成,主要把应用层和底层接口之间的代码生成配置说一下。本周末会更新功能安全相关,欢迎大家留言交流!作为一个总是用C写代码的人来说,第一次接触到基于MBD的代码生成的时候就迫不及待的…

【LeetCode笔记】215. 数组中的第K个最大元素(Java、快排、堆排、并发快排)

文章目录题目描述思路 & 代码快排基于 Fork / Join 的并发快排针对 topK 的快排优化堆排基本堆排结合题目的堆排二刷题目描述 大名鼎鼎的TOP K,主要考察排序快排 & 堆排 思路 & 代码 快排 没啥好说的,就是快排结束后,返回倒…

c语言中怎么画直线,ps如何画直线 【操作流程】

大家都知道电脑使用起来非常方便,但遇见ps如何画直线的时候就非常头疼了,如果你是第一次遇到ps如何画直线,怎么样才能快速解决ps如何画直线带来的烦恼呢?小编为大家收集了很多关于ps如何画直线问题的解决方法,下面请看…

【LeetCode笔记】470. 用Rand7()实现Rand10()(Java、概率)

文章目录题目描述代码 & 思路更新版三刷 - 极简版题目描述 貌似是比较高频的面试题目啊,有学概率论内味了(讲道理我概率论学得不好) 代码 & 思路 先用Rand7实现RandN(N > 10),类似进制&…

【纠错记录】本地FTP服务器无法被外部连接

问题描述 在本地主机开了个FTP服务器,本机可以正常访问,但是外部主机不能访问FTP服务器 解决方法 ① 一开始以为是服务端Xlight FTP的问题,检查权限并没有发现问题 ② 接着考虑到有没有可能是客户端Flash FXP的问题,于是尝试直…

双线性插值算法c 语言实现,双线性插值 - CristianoC的个人空间 - OSCHINA - 中文开源技术交流社区...

前言最近在学习LBP,其中的圆形LBP特征由于计算的值可能不是整数,即计算出来的点不在图像上,我们要使用计算出来的点的插值点。目的的插值方法有很多,Opencv使用的是双线性插值,今天就来介绍一下双线性插值。概述先给大…

android 访问服务器josn文件,Android客户端对服务器回来的json文件进行解析

Android客户端对服务器返回的json文件进行解析和解析XML的方式大同小异,只有解析方式存在区别:/*** 解析服务器返回来的json数据* param content* return* throws Exception*/private static List parseJson(String content) throws Exception {List videoList new…