Poetic Walks(MIT software constraction) part1

2024-01-02 07:50

本文主要是介绍Poetic Walks(MIT software constraction) part1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接
该题目主要是训练java的泛型编程、AF(抽象函数) 、rep invariants(表示不变量)、mutable、immutable数据类型和preventing rep exposure(防御式编程)
ConcreteEdgesGraph和ConcreteVerticesGraph最大的区别在于EDGE类是immutable而Vertices类是mutable。
首先先编写关于Graph的测试函数GraphInstanceTest他其实是后面的编写的ConcreteEdgesGraphTest和ConcreteVerticesGraphTest的父类。
所以我们编写的GraphInstanceTest测试函数可以分为以下几种类型:

  1. 测试add函数 按加入的点分类:点已存在,点不存在(重复输入)
@Testpublic void testAdd(){//Graph<String> Graph<String> test1=emptyInstance();String a="xu";String b="ya";test1.add(a);test1.add(b);assertEquals(true,test1.vertices().contains(a));assertEquals(true,test1.vertices().contains(b));assertEquals(false,test1.add(a));}

2.测试set函数
在这里插入图片描述
观察set函数的spec 可将测试划分为边已经存在,传入权值为0,移除边。传入权值大于0,更新边,返回原有边权值。传入权值小于0,return -1。边不存在,传入权值大于等于0加入顶点return 0,边不存在,传入权值小于0 return -1。

 @Testpublic void testset(){Graph<String> graph =emptyInstance();assertEquals(0,graph.set("a", "b", 5));assertEquals(0,graph.set("b", "c", 4));assertEquals(5,graph.set("a", "b", 6));assertEquals(6,graph.set("a", "b", 0));assertEquals(0,graph.set("a", "c", 0));assertEquals(-1,graph.set("a", "b", -3));	}

3.测试remove
在这里插入图片描述

 @Testpublic void testRemove() {Graph<String> test3=emptyInstance();test3.add("x");//test3.add();assertEquals(true,test3.vertices().contains("x"));test3.remove("x");assertEquals(false,test3.vertices().contains("x"));}

4.测试vertices
在这里插入图片描述

//两种情况:空图,不是空图@Testpublic void testVertices() {testAdd();Graph<String> graph =emptyInstance();String a="a";String b="b";String c="c";graph.add(a);graph.add(b);graph.add(c);assertEquals(true,graph.vertices().contains(a));assertEquals(true,graph.vertices().contains(b));assertEquals(true,graph.vertices().contains(c));}

5.测试soureces
在这里插入图片描述

//两种情况:边已经存在,边不存在@Testpublic void testSources() {testAdd();testset();Graph<String> graph =emptyInstance();String a="a";String b="b";String c="c";graph.add(a);graph.add(b);graph.add(c);graph.set(a, b, 5);graph.set(b, c, 4);graph.set(a, c, 3);Map<String,Integer> map=new HashMap<String,Integer>();map.put(a,3);map.put(b,4);assertEquals(map,graph.sources(c)); 	}

6.测试targets
在这里插入图片描述

//两种情况:边已经存在,边不存在@Testpublic void testTargets() {testAdd();testset();Graph<String> graph =emptyInstance();String a="a";String b="b";String c="c";graph.add(a);graph.add(b);graph.add(c);graph.set(a, b, 5);graph.set(b, c, 4);graph.set(a, c, 3);Map<String,Integer> map=new HashMap<String,Integer>();map.put(c,3);map.put(b,5);assertEquals(map,graph.targets(a)); 	}

这篇关于Poetic Walks(MIT software constraction) part1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/561797

相关文章

Python基础part1

Python基础 语法 字面量 数字 整数浮点复数布尔 字符串列表 list元组 Tuple集合 Set字典 Dictionary 注释 单行# 单行注释的内容多行“”“ 多行注释的内容 ”“” 单行注释#后要加一个空格再写注释 变量 变量无类型,但数据有类型 语法: 变量名 = 变量值 数据类型转换: int() str() float() 标识符 中文,英文,

JSP的增删改查part1

运用Myeclisp对数据库进行增删改查 要建立6个库 1).其中dao层用与连接数据库和对数据库进行相关操作; 2).entity层用于存放数据库连接后的实体数据; 3.)service层是在mcv三层模式中新添加一层,能够更加清晰的定义应用程序的边界,需要操作数据的时候,通过service层访问DAO层来实现。

C++(十五)继承 part1

一、继承的概念         继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称子类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复用,继承是类设计层次的复用。         下面我们看到没有继承之前我

关于javaSocket中 Software caused connection abort: recv failed问题

在学习Socket中今天突然遇到了下面这样的问题 原来是网路连接出了问题,因为我测试的是远程连接所以是在学校的局域网下,结果很不稳定,开始还以为怎么了一会连上了一会又出现问题然后把IP地址改为本机的127.0.0.1之后就没有 出现过了.

myeclipse中没有software update选项

方法一:你在myeclipse中点Windows-->Preferences 在弹出的对话框的左侧栏,点General-->点Capabilities,然后把Classic Update前的框选上,OK了。 方法二:也可以通过Help-->MyEclipse Configuration Center-->Software-->Add Site的方式进行插件安装。。

代码开源许可证傻傻分不清 Apache MIT GPL的区别

https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

MIT 6.5940 EfficientML.ai Fall 2023: Lab 1 Pruning

EfficientML.ai Lec 3 - Pruning and Sparsity (Part I) MIT 6.5940, Fall 2023, Zoom 本文是EfficientML.ai Fall 2023课程作业1练习答案,在本次练习里将会对经典的分类神经网络进行剪枝处理,减少模型大小和延迟。The goals of this assignment are as fo

MIT的10门免费线上课,YYDS!

大家好,我是小书童! 今天给大家推荐10门 MIT 线上课程,无需付费,千万不要错过,抓紧学习起来。 1、计算机科学和Python编程简介 通过这个课程,将会学习到 计算的概念Python编程语言一些简单的算法测试和调试算法复杂性的非正式介绍数据结构 课程链接: https://www.edx.org/learn/computer-science/massachusetts-institut

【MIT-BEVFusion代码解读】第四篇:融合特征fuser和解码特征decoder

文章目录 1. fuser模块2. decoder模块2.1 backbone模块2.2 neck模块 BEVFusion相关的其他文章链接: 【论文阅读】ICRA 2023|BEVFusion:Multi-Task Multi-Sensor Fusion with Unified Bird‘s-Eye View RepresentationMIT-BEVFusion训练

在 Mac 上安装 MIT Scheme 解释器的命令行方法

在 Mac 上安装 MIT Scheme 解释器的命令行方法 步骤如下: 第 1 步,安装 brew 。确保计算机已经连上了网络,然后打开 Mac 上的终端,输入如下的命令:   ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"       第 2 步,