StackFrame { Optional<RobotBreakpoint> getLineBreakpoint() { return context.getLineBreakpoint(); } StackFrame(final String name, final FrameCategory category, final int level, final StackFrameContext context,
            final Set<URI> loadedResources);   StackFrame(final String name, final FrameCategory category, final int level, final StackFrameContext context);   StackFrame(final String name, final FrameCategory category, final int level, final StackFrameContext context,
            final Supplier<URI> contextPathSupplier); private  StackFrame(final String name, final FrameCategory category, final int level,
            final StackFrameContext context, final Supplier<URI> contextPathSupplier, final Set<URI> loadedResources); String getName(); boolean hasCategory(final FrameCategory category); boolean isSuiteContext(); boolean isSuiteDirectoryContext(); boolean isSuiteFileContext(); boolean isTestContext(); Optional<URI> getCurrentSourcePath(); Optional<URI> getContextPath(); Optional<FileRegion> getFileRegion(); boolean isLibraryKeywordFrame(); boolean isErroneous(); String getErrorMessage(); StackFrameVariables getVariables(); Optional<StackVariablesDelta> getLastDelta();  }
@Test public void associatedLineBreakpointIsTakenDirectlyFromContext() { final StackFrameContext contextWithoutBp = mock(StackFrameContext.class); when(contextWithoutBp.getLineBreakpoint()).thenReturn(Optional.empty()); final RobotBreakpoint bp = mock(RobotBreakpoint.class); final StackFrameContext contextWithBp = mock(StackFrameContext.class); when(contextWithBp.getLineBreakpoint()).thenReturn(Optional.of(bp)); assertThat(new StackFrame("frame", FrameCategory.KEYWORD, 42, contextWithoutBp).getLineBreakpoint()).isEmpty(); assertThat(new StackFrame("frame", FrameCategory.KEYWORD, 42, contextWithBp).getLineBreakpoint()).contains(bp); }