Skip to content

Commit

Permalink
Merge pull request #544 from smeup/feature/dspf_load_also_by_json
Browse files Browse the repository at this point in the history
Bugfix/display files metadata.
  • Loading branch information
lanarimarco authored Jun 10, 2024
2 parents 8970cd9 + c34234c commit 4541779
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ const val DEFAULT_ACTIVATION_GROUP_NAME: String = "*DFTACTGRP"
* @param memorySliceStorage Allows to implement a symbol table storaging.
* If null, symbol table persistence will be skipped
* @param jarikoCallback Several callback.
* @param reloadConfig Reload configuration, it is mandatory for rpgle programs containing RLA operations
* @param dspfConfig DSPF parser configuration, if null metadata information related to display files will be loaded
* from reloadConfig
* @param defaultActivationGroupName Default activation group. If not specified it assumes "*DEFACTGRP"
* */

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ private fun MutableMap<String, DataDefinition>.addIfNotPresent(dataDefinition: D

private fun FileDefinition.loadMetadata(): FileMetadata {
return when {
(fileType == FileType.DB) -> {
(fileType == FileType.DB || MainExecutionContext.getConfiguration().dspfConfig == null) -> {
val reloadConfig = MainExecutionContext.getConfiguration()
.reloadConfig
?: error("Not found metadata for $this because missing property reloadConfig in configuration")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package com.smeup.rpgparser.video

import com.smeup.dbnative.DBNativeAccessConfig
import com.smeup.rpgparser.AbstractTest
import com.smeup.rpgparser.execution.Configuration
import com.smeup.rpgparser.execution.DspfConfig
import com.smeup.rpgparser.execution.SimpleDspfConfig
import com.smeup.rpgparser.execution.*
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertEquals

class VideoInterpeterTest : AbstractTest() {

lateinit var configuration: Configuration
lateinit var configurationForRetroCompatibilityTest: Configuration

@BeforeTest
fun setUp() {
Expand All @@ -20,6 +20,15 @@ class VideoInterpeterTest : AbstractTest() {
configuration.dspfConfig = DspfConfig(
metadataProducer = { displayFile: String -> dspfConfig.getMetadata(displayFile = displayFile) }
)
// If dspfConfig is null metadata must be loaded from reloadConfig, as previously
configurationForRetroCompatibilityTest = Configuration(dspfConfig = null)
.apply {
val reloadConfig = SimpleReloadConfig(metadataPath = path, connectionConfigs = listOf())
this.reloadConfig = ReloadConfig(
nativeAccessConfig = DBNativeAccessConfig(emptyList()),
metadataProducer = { dbFile: String -> reloadConfig.getMetadata(dbFile = dbFile) }
)
}
}

@Test
Expand All @@ -28,6 +37,12 @@ class VideoInterpeterTest : AbstractTest() {
assertEquals(expected = expected, actual = "video/FILEDEF".outputOf(configuration = configuration))
}

@Test
fun executeFILEDEF1() {
val expected = listOf("W\$PERI:12", "£RASDI:HELLO_WORLD")
assertEquals(expected = expected, actual = "video/FILEDEF1".outputOf(configuration = configurationForRetroCompatibilityTest))
}

@Test
fun executeEXFMT_MOCK() {
val expected = listOf("")
Expand Down
28 changes: 28 additions & 0 deletions rpgJavaInterpreter-core/src/test/resources/video/FILEDEF1.rpgle
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
V* ==============================================================
D* 06/02/24
D* Test the file video metadata loading
V* ==============================================================


FB£DIR40V CF E WORKSTN USROPN
F INFDS(DSSF01)

D MSG S 50 VARYING

D WFUND1 DS
D WSDATA 8 0
* This field definition is assumed by B£DIR40V
D W$PERI

O E RIGA 1
O W$PERI 11
C EVAL W$PERI=12
C EVAL MSG='W$PERI:' + %CHAR(W$PERI)
* EXPECTED: W$PERI:12
C MSG DSPLY

* This field is defined in B£DIR40V
C EVAL £RASDI='HELLO_WORLD'
C EVAL MSG='£RASDI:' + %CHAR(£RASDI)
* EXPECTED: £RASDI=:HELLO_WORLD
C MSG DSPLY

0 comments on commit 4541779

Please sign in to comment.