2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.transform.regex.internal;
15 import static org.junit.jupiter.api.Assertions.*;
17 import org.junit.jupiter.api.BeforeEach;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.core.transform.TransformationException;
22 * @author Thomas.Eichstaedt-Engelen
24 public class RegExTransformationServiceTest extends AbstractTransformationServiceTest {
26 private RegExTransformationService processor;
30 processor = new RegExTransformationService();
34 public void testTransformByRegex() throws TransformationException {
36 String transformedResponse = processor.transform(".*?<current_conditions>.*?<temp_c data=\"(.*?)\".*", source);
39 assertEquals("8", transformedResponse);
43 public void testTransformByRegex_noGroup() throws TransformationException {
45 String transformedResponse = processor.transform(".*", source);
48 assertEquals("", transformedResponse);
52 public void testTransformByRegex_moreThanOneGroup() throws TransformationException {
54 String transformedResponse = processor.transform(".*?<current_conditions>.*?<temp_c data=\"(.*?)\"(.*)",
58 assertEquals("8", transformedResponse);
62 public void testTransformByRegex_substituteFirst() throws TransformationException {
64 String transformedResponse = processor.transform("s/^OP:(.*?),ARG:(.*)$/$1($2)/", "OP:SetMode,ARG:42");
67 assertEquals("SetMode(42)", transformedResponse);
71 public void testTransformByRegex_substituteAll() throws TransformationException {
73 String transformedResponse = processor.transform("s/([A-Z]+)([0-9]+),*/var$1=$2 /g", "X12,Y54");
76 assertEquals("varX=12 varY=54 ", transformedResponse);