|
20 | 20 | #include "../../model/ScheduleFixedInterval_Impl.hpp"
|
21 | 21 | #include "../../model/ScheduleVariableInterval.hpp"
|
22 | 22 | #include "../../model/ScheduleVariableInterval_Impl.hpp"
|
| 23 | +#include "../../model/ExternalFile.hpp" |
| 24 | +#include "../../model/ExternalFile_Impl.hpp" |
23 | 25 | #include "../../model/ScheduleFile.hpp"
|
24 | 26 | #include "../../model/ScheduleFile_Impl.hpp"
|
25 | 27 | #include "../../model/YearDescription.hpp"
|
26 | 28 | #include "../../model/YearDescription_Impl.hpp"
|
27 | 29 |
|
28 | 30 | #include <utilities/idd/IddEnums.hxx>
|
29 | 31 |
|
| 32 | +#include "../../utilities/core/PathHelpers.hpp" |
| 33 | +#include "../../utilities/core/Filesystem.hpp" |
| 34 | +#include <resources.hxx> |
| 35 | + |
30 | 36 | #include <boost/regex.hpp>
|
31 | 37 |
|
32 | 38 | #include <sstream>
|
@@ -1850,3 +1856,138 @@ TEST_F(EnergyPlusFixture, DISABLED_ForwardTranslator_ScheduleVariableInterval_Da
|
1850 | 1856 | // check that there were XX untils
|
1851 | 1857 | //EXPECT_EQ(864, numUntils);
|
1852 | 1858 | }
|
| 1859 | + |
| 1860 | +TEST_F(EnergyPlusFixture, ScheduleFileRelativePath) { |
| 1861 | + |
| 1862 | + openstudio::path absoluteScheduleFilePath = resourcesPath() / toPath("model/schedulefile.csv"); |
| 1863 | + ASSERT_TRUE(openstudio::filesystem::is_regular_file(absoluteScheduleFilePath)); |
| 1864 | + ASSERT_TRUE(absoluteScheduleFilePath.is_absolute()); |
| 1865 | + |
| 1866 | + openstudio::path curDirPath = boost::filesystem::current_path(); |
| 1867 | + openstudio::path relativeScheduleFilePath = openstudio::filesystem::relative(absoluteScheduleFilePath, curDirPath); |
| 1868 | + ASSERT_TRUE(relativeScheduleFilePath.is_relative()); |
| 1869 | + |
| 1870 | + // ScheduleFile(external_file(/abs/path)) |
| 1871 | + { |
| 1872 | + Model model; |
| 1873 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1874 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1875 | + |
| 1876 | + boost::optional<ExternalFile> external_file = ExternalFile::getExternalFile(model, openstudio::toString(absoluteScheduleFilePath)); |
| 1877 | + ASSERT_TRUE(external_file); |
| 1878 | + ScheduleFile schedule(*external_file); |
| 1879 | + EXPECT_TRUE(schedule.setTranslateFileWithRelativePath(true)); |
| 1880 | + EXPECT_TRUE(schedule.translateFileWithRelativePath()); |
| 1881 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1882 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1883 | + ExternalFile externalfile = schedule.externalFile(); |
| 1884 | + EXPECT_EQ(1u, externalfile.scheduleFiles().size()); |
| 1885 | + EXPECT_EQ(openstudio::toString(absoluteScheduleFilePath.filename()), externalfile.fileName()); |
| 1886 | + EXPECT_TRUE(toPath(externalfile.fileName()).is_relative()); |
| 1887 | + EXPECT_FALSE(externalfile.filePath().is_relative()); |
| 1888 | + EXPECT_NE(toPath(externalfile.fileName()), externalfile.filePath()); |
| 1889 | + |
| 1890 | + ForwardTranslator ft; |
| 1891 | + Workspace workspace = ft.translateModel(model); |
| 1892 | + |
| 1893 | + std::vector<WorkspaceObject> objects = workspace.getObjectsByType(IddObjectType::Schedule_File); |
| 1894 | + ASSERT_EQ(1u, objects.size()); |
| 1895 | + |
| 1896 | + boost::optional<std::string> fileName = objects[0].getString(2); // File Name |
| 1897 | + ASSERT_TRUE(fileName); |
| 1898 | + EXPECT_TRUE(toPath(fileName.get()).is_relative()); // rel path |
| 1899 | + EXPECT_NE(externalfile.filePath(), fileName.get()); |
| 1900 | + } |
| 1901 | + |
| 1902 | + // ScheduleFile(external_file(/rel/path)) |
| 1903 | + { |
| 1904 | + Model model; |
| 1905 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1906 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1907 | + |
| 1908 | + boost::optional<ExternalFile> external_file = ExternalFile::getExternalFile(model, openstudio::toString(relativeScheduleFilePath)); |
| 1909 | + ASSERT_TRUE(external_file); |
| 1910 | + ScheduleFile schedule(*external_file); |
| 1911 | + EXPECT_TRUE(schedule.setTranslateFileWithRelativePath(true)); |
| 1912 | + EXPECT_TRUE(schedule.translateFileWithRelativePath()); |
| 1913 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1914 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1915 | + ExternalFile externalfile = schedule.externalFile(); |
| 1916 | + EXPECT_EQ(1u, externalfile.scheduleFiles().size()); |
| 1917 | + EXPECT_EQ(openstudio::toString(relativeScheduleFilePath.filename()), externalfile.fileName()); |
| 1918 | + EXPECT_TRUE(toPath(externalfile.fileName()).is_relative()); |
| 1919 | + EXPECT_FALSE(externalfile.filePath().is_relative()); |
| 1920 | + EXPECT_NE(toPath(externalfile.fileName()), externalfile.filePath()); |
| 1921 | + |
| 1922 | + ForwardTranslator ft; |
| 1923 | + Workspace workspace = ft.translateModel(model); |
| 1924 | + |
| 1925 | + std::vector<WorkspaceObject> objects = workspace.getObjectsByType(IddObjectType::Schedule_File); |
| 1926 | + ASSERT_EQ(1u, objects.size()); |
| 1927 | + |
| 1928 | + boost::optional<std::string> fileName = objects[0].getString(2); // File Name |
| 1929 | + ASSERT_TRUE(fileName); |
| 1930 | + EXPECT_TRUE(toPath(fileName.get()).is_relative()); // rel path |
| 1931 | + EXPECT_NE(externalfile.filePath(), fileName.get()); |
| 1932 | + } |
| 1933 | + |
| 1934 | + // ScheduleFile(model, /abs/path) |
| 1935 | + { |
| 1936 | + Model model; |
| 1937 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1938 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1939 | + |
| 1940 | + ScheduleFile schedule(model, openstudio::toString(absoluteScheduleFilePath)); |
| 1941 | + EXPECT_TRUE(schedule.setTranslateFileWithRelativePath(true)); |
| 1942 | + EXPECT_TRUE(schedule.translateFileWithRelativePath()); |
| 1943 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1944 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1945 | + ExternalFile externalfile = schedule.externalFile(); |
| 1946 | + EXPECT_EQ(1u, externalfile.scheduleFiles().size()); |
| 1947 | + EXPECT_EQ(openstudio::toString(absoluteScheduleFilePath), externalfile.fileName()); |
| 1948 | + EXPECT_FALSE(toPath(externalfile.fileName()).is_relative()); |
| 1949 | + EXPECT_FALSE(externalfile.filePath().is_relative()); |
| 1950 | + EXPECT_EQ(toPath(externalfile.fileName()), externalfile.filePath()); |
| 1951 | + |
| 1952 | + ForwardTranslator ft; |
| 1953 | + Workspace workspace = ft.translateModel(model); |
| 1954 | + |
| 1955 | + std::vector<WorkspaceObject> objects = workspace.getObjectsByType(IddObjectType::Schedule_File); |
| 1956 | + ASSERT_EQ(1u, objects.size()); |
| 1957 | + |
| 1958 | + boost::optional<std::string> fileName = objects[0].getString(2); // File Name |
| 1959 | + ASSERT_TRUE(fileName); |
| 1960 | + EXPECT_FALSE(toPath(fileName.get()).is_relative()); // abs path |
| 1961 | + EXPECT_EQ(externalfile.filePath(), fileName.get()); |
| 1962 | + } |
| 1963 | + |
| 1964 | + // ScheduleFile(model, /rel/path) |
| 1965 | + { |
| 1966 | + Model model; |
| 1967 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1968 | + EXPECT_EQ(0u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1969 | + |
| 1970 | + ScheduleFile schedule(model, openstudio::toString(relativeScheduleFilePath)); |
| 1971 | + EXPECT_TRUE(schedule.setTranslateFileWithRelativePath(true)); |
| 1972 | + EXPECT_TRUE(schedule.translateFileWithRelativePath()); |
| 1973 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ScheduleFile>().size()); |
| 1974 | + EXPECT_EQ(1u, model.getConcreteModelObjects<ExternalFile>().size()); |
| 1975 | + ExternalFile externalfile = schedule.externalFile(); |
| 1976 | + EXPECT_EQ(1u, externalfile.scheduleFiles().size()); |
| 1977 | + EXPECT_EQ(openstudio::toString(relativeScheduleFilePath), externalfile.fileName()); |
| 1978 | + EXPECT_TRUE(toPath(externalfile.fileName()).is_relative()); |
| 1979 | + EXPECT_TRUE(externalfile.filePath().is_relative()) << externalfile.filePath(); |
| 1980 | + EXPECT_EQ(toPath(externalfile.fileName()), externalfile.filePath()); |
| 1981 | + |
| 1982 | + ForwardTranslator ft; |
| 1983 | + Workspace workspace = ft.translateModel(model); |
| 1984 | + |
| 1985 | + std::vector<WorkspaceObject> objects = workspace.getObjectsByType(IddObjectType::Schedule_File); |
| 1986 | + ASSERT_EQ(1u, objects.size()); |
| 1987 | + |
| 1988 | + boost::optional<std::string> fileName = objects[0].getString(2); // File Name |
| 1989 | + ASSERT_TRUE(fileName); |
| 1990 | + EXPECT_TRUE(toPath(fileName.get()).is_relative()); // rel path |
| 1991 | + EXPECT_EQ(externalfile.filePath(), fileName.get()); |
| 1992 | + } |
| 1993 | +} |
0 commit comments