/**
     * @author etao
     * @description check last time selected
     * @param timePeriod
     * @param dateFormat
     * @CreateDate 21 Dec 2016 13:50:39
     * @modifyUser
     * @modifyDate
     * @comments
     */
    public void checkLastTimeSelected(String timePeriod, String dateFormat){
        List<WebElement> lastTimeSelectedList = page.getLastTimeSelectedList();
        List<String> dateStr = new ArrayList<String>();
        for (WebElement e : lastTimeSelectedList) {
            String tempStr = e.getText().trim();
            tempStr = tempStr.split(" ")[0];            
            dateStr.add(tempStr.trim());
        }
        isAllTimeCorrect(dateFormat, timePeriod, dateStr);
    }

    public void isAllTimeCorrect(String dateFormat, String timePeriod, List<String> date) {
        for (String selectedDay : date) {
            if(timePeriod.equals("Last Day")){
                checkReportDateInTimeRange(Calendar.DAY_OF_MONTH, -1, dateFormat, selectedDay);                
            }else if (timePeriod.equals("Last Week")) {
                checkReportDateInTimeRange(Calendar.DATE, -7, dateFormat, selectedDay);
            }else if (timePeriod.equals("Last Month")) {
                checkReportDateInTimeRange(Calendar.MONTH, -1, dateFormat, selectedDay);
            }else if (timePeriod.equals("Last 2 Months")) {
                checkReportDateInTimeRange(Calendar.MONTH, -2, dateFormat, selectedDay);
            }else if (timePeriod.equals("Last 3 Months")) {
                checkReportDateInTimeRange(Calendar.MONTH, -3, dateFormat, selectedDay);
            }else if (timePeriod.equals("Last 6 Months")) {
                checkReportDateInTimeRange(Calendar.MONTH, -6, dateFormat, selectedDay);
            }else if (timePeriod.equals("Last 9 Months")) {
                checkReportDateInTimeRange(Calendar.MONTH, -9, dateFormat, selectedDay);
            }else if (timePeriod.equals("Last Year")) {
                checkReportDateInTimeRange(Calendar.YEAR, -1, dateFormat, selectedDay);
            }
        }
    }

    public void checkReportDateInTimeRange(int calendar, int diff, String dateFormat ,String selectedDay) {
        java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(dateFormat, Locale.US);
        List<String> dateStr = new ArrayList<String>();
        Calendar c = Calendar.getInstance();
        dateStr.add(format.format(c.getTime()));//add date of today into string
        dateStr.add(selectedDay);//add date of selected date into string
        c.add(calendar, diff);
        c.add(Calendar.DATE, -1);
        dateStr.add(format.format(c.getTime()));//add date of last time range
        Assert.assertTrue(checkDatePeriod(dateStr, dateFormat),"The last time selected date is not in the time range");        
    }

    public boolean checkDatePeriod(List<String> date, String dateFormat) {
        boolean flg = true;    
        DateFormat df = new SimpleDateFormat(dateFormat, Locale.US);
        try {
            for (int i = 1; i < date.size(); i++) {
                Date d1 = df.parse(date.get(i - 1));
                Date d2 = df.parse(date.get(i));
                flg = flg && (d1.getTime() >= d2.getTime());
                if (flg == false) {
                    System.out.println("******* In the third return");
                    System.out.println("=== date -1: " + date.get(i - 1).toString());
                    System.out.println("=== date: " + date.get(i).toString());
                    if (i + 1 < date.size()) {
                        System.out.println("=== date +1: " + date.get(i + 1).toString());
                    }
                    break;
                }
            }
            return flg;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

check time period的更多相关文章

  1. 珍藏的数据库SQL基础练习题答案

    自己珍藏的数据库SQL基础练习题答案 一,基本表的定义与删除. 题1: 用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1 ...

  2. Verilog中的specify block和timing check

    在ASIC设计中,有两种HDL construct来描述delay信息: 1)Distributed delays:通过specify event经过gates和nets的time,来描述delay; ...

  3. HDU 5908 Abelian Period 暴力

    Abelian Period 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5908 Description Let S be a number st ...

  4. Java 8 – Period and Duration examples

    Few examples to show you how to use Java 8 Duration, Period and ChronoUnit objects to find out the d ...

  5. -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HO 解决办法

    最近在使用maven,项目测试的时候出现了这么一个错.-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2 ...

  6. SQL Server 合并复制遇到identity range check报错的解决

        最近帮一个客户搭建跨洋的合并复制,由于数据库非常大,跨洋网络条件不稳定,因此只能通过备份初始化,在初始化完成后向海外订阅端插入数据时发现报出如下错误: Msg 548, Level 16, S ...

  7. SharePoint 2103 Check user permission on list

    一.需求: check user 对SharePoint list 的permission 代码如下: private static string GetListPermission(SPList l ...

  8. 用SVN check out项目后第三方库丢失

    曾经用Cornerstone check out 一份项目下来,但其中第三方.a库始终丢失,项目报错,研究后找到了以下解决方法: 首先,Xcode默认忽略.a 文件.所以无法提交到svn服务器,但是很 ...

  9. SQL Check

    一款实时性能监测工具 SQL Check? 一款实时监测SQL数据库性能.实时排查的问题的免费工具. 可以实时监测20个左右的SQL关键性能指标,每个指标都已图形化动态直播形式展现. 适合DBA.数据 ...

随机推荐

  1. CSS样式基础总结

    首行缩进:text-indent:2em 行高:line-height:1.5em 1.5倍行距 也可以设置像素文字修饰:text-decoration:underline下划线 line-throu ...

  2. Day5-python基础之函数(二)

    生成器 迭代器 装饰器 模块   来个需求,一个列表中所有元素都+1 1.最容易想到的方法 for循环,找列表索引,对应每个值+1 list_old = [1,2,3,4,5,6,7,8,9] for ...

  3. python学习笔记(一)

    • Python能干嘛?[1]科学计算[2]图形化开发[3]系统脚本[4]Web服务器[5]网络爬虫[6]服务器集群自动化运维 • 常用工具:easy_install.pip.ipython.Subl ...

  4. git文件迁移到新架构

    环境: ubuntu16.04 代码托管地址:git.oschina.net 迁移原因: git上某工程是一堆静态页面html,因为在ubuntu下缺乏git图形客户端,想使用eclipse集成的gi ...

  5. c#.net单例模式的学习记录!

    一. 单例(Singleton)模式 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一实例. 单例类必须给所有其它对象提供这一实例. 单例模式应用: 每台计算机可以有若干个打印机 ...

  6. Nexus安装配置

    一.下载最新版本的nexus 1.下载地址:http://www.sonatype.org/nexus/go 2.官网如果下载不了,就找个zip下载,我下载的是:nexus-2.10.0-02-bun ...

  7. form表单的属性标签

    form表单的常用标签 表单: <form id="" name="" method="post/get" action=" ...

  8. 如何正确配置Nginx+PHP

    对很多人而言,配置Nginx+PHP无外乎就是搜索一篇教程,然后拷贝粘贴.听上去似乎也没什么问题,可惜实际上网络上很多资料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷贝粘贴,早晚有一天会为此付出 ...

  9. p/invoke碎片,对结构体的处理

    结构体的一些相关知识 可直接转换类类型,比如int类型,在托管代码和非托管代码中占据内存大小 和意义都是一个样的. 结构体封送的关键是:在托管代码和非托管代码中定义的一致性.什么是定义的一致性?包括结 ...

  10. mybatis中#{}与${}的差别(如何防止sql注入)

    默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义. # ...